一、Spring Boot四大功能
Spring Boot將很多魔法帶入了Spring應用程序的開發之中,其中最重要的是以下四個核心。
- 自動配置:針對很多Spring應用程序常見的應用功能,Spring Boot能自動提供相關配置。
- 起步依賴:告訴Spring Boot需要什麼功能,它就能引入需要的庫。
- 命令行界面:這是Spring Boot的可選特性,藉此你只需寫代碼就能完成完整的應用程序,無需傳統項目構建。
- Actuator:讓你能夠深入運行中的Spring Boot應用程序,一探究竟。
二、功能介紹
1. 自動配置
在任何Spring應用程序的源代碼裏,你都會找到Java配置或XML配置(抑或兩者皆有),它們爲應用程序開啓了特定的特性和功能。舉個例子,如果你寫過用JDBC訪問關係型數據庫的應用程序,那你一定在Spring應用程序上下文裏配置過JdbcTemplate這個Bean。
既然它如此常見,那爲什麼還要你去寫呢?
Spring Boot會爲這些常見配置場景進行自動配置。如果Spring Boot在應用程序的Classpath裏發 現H2數據庫的庫,那麼它就自動配置一個嵌入式H2數據庫。如果在Classpath裏發現JdbcTemplate,那麼它還會爲你配置一個JdbcTemplate的Bean。你無需操心那些Bean的配置,Spring Boot會做好準備,隨時都能將其注入到你的Bean裏。
Spring Boot的自動配置遠不止嵌入式數據庫和JdbcTemplate,它有大把的辦法幫你減輕配置負擔,這些自動配置涉及Java持久化API(Java Persistence API,JPA)、Thymeleaf模板、安全和Spring MVC。
2.起步依賴
向項目中添加依賴是件富有挑戰的事。你需要什麼庫?它的Group和Artifact是什麼?你需要哪個版本?哪個版本不會和項目中的其他依賴發生衝突?
舉個例子,假設你正在用Spring MVC構造一個REST API,並將JSON(JavaScript Object Notation)作爲資源表述。此外,你還想運用遵循JSR-303規範的聲明式校驗,並使用嵌入式的Tomcat服務器來提供服務。要實現以上目標,你在Maven或Gradle裏至少需要以下8個依賴:
- org.springframework:spring-core
- org.springframework:spring-web
- org.springframework:spring-webmvc
- com.fasterxml.jackson.core:jackson-databind
- org.hibernate:hibernate-validator
- org.apache.tomcat.embed:tomcat-embed-core
- org.apache.tomcat.embed:tomcat-embed-el
- org.apache.tomcat.embed:tomcat-embed-logging-juli
不過,如果打算利用Spring Boot的起步依賴,你只需添加Spring Boot的Web起步依賴(org.springframework.boot:spring-boot-starter-web),僅此一個。它會根據依賴傳遞把其他所需依賴引入項目裏,你都不用考慮它們。
比起減少依賴數量,起步依賴還引入了一些微妙的變化。向項目中添加了Web起步依賴,實際上指定了應用程序所需的一類功能。因爲應用是個Web應用程序,所以加入了Web起步依賴。與之類似,如果應用程序要用到JPA持久化,那麼就可以加入jpa起步依賴。如果需要安全功能,那就加入security起步依賴。簡而言之,你不再需要考慮支持某種功能要用什麼庫了,引入相關起步依賴就行。
3.命令行界面
Spring Boot CLI是Spring Boot的非必要組成部分。更方便快速的開發應用程序,因爲我只在eclipse下使用sprong boot,沒有對命令行界面進行學習研究,有興趣的同學可以自行搜索查看。
4.Actuator
Spring Boot的最後一塊“拼圖”是Actuator,其他幾個部分旨在簡化Spring開發,而Actuator則要提供在運行時檢視應用程序內部情況的能力。安裝了Actuator就能窺探應用程序的內部情況了,包括如下細節:
- Spring應用程序上下文裏配置的Bean
- Spring Boot的自動配置做的決策
- 應用程序取到的環境變量、系統屬性、配置屬性和命令行參數
- 應用程序裏線程的當前狀態
- 應用程序最近處理過的HTTP請求的追蹤情況
- 各種和內存用量、垃圾回收、Web請求以及數據源用量相關的指標
Actuator通過Web端點和shell界面向外界提供信息。如果要藉助shell界面,你可以打開SSH(Secure Shell),登入運行中的應用程序,發送指令查看它的情況。