對Spring Boot 的簡短介紹,提供整個文檔的一份快速閱讀的地圖,使用起來方便查找html
開始使用java
-
-
-
- 這裏使用繼承spring-boot-starter-parent項目的pom文件的方式、而後聲明瞭一些依賴倉庫與插件倉庫
- 這裏介紹了能夠忽略版本號的依賴管理方式,是由於繼承上述pom文件裏面繼承了spring.io,它會給出咱們最合適的版本。
- 這裏出現了三個註解
@RestController
、@EnableAutoConfiguration
、@RequestMapping
和一個靜態方法SpringApplication.run
下面的章節作點簡單解釋
- 這個註解是讓springboot根據你的依賴猜測你通常會如何配置bean,好比你添加了一個spring-boot-starter-web 的依賴,使用這個註解就自動配置一個web項目
接下來又解釋了全部官方Starters都能很好的被自動配置,但不只僅只有官方Starters能被自動配置。
- 這裏的main方法就是傳統java程序的main方法,經過調用SpringApplication的靜態方法run來啓動springboot項目
- 把全部Classpath中依賴+源代碼都打包起來,在沒有springboot的時候通常用uber這麼幹,如今能夠直接在pom裏面
標籤中添加插件了
-
- 就是告訴你springboot幫你管理了大部分的依賴版本,你只須要聲明依賴不用管版本,springboot會替你挑選合適版本,由於他們有一份BOM。
- 先介紹了一些繼承spring-boot-starter-parent所提供的特性,注:在Spring配置文件中(properties文件或yml文件)支持佔位符
${...}
,可是macen filtering 使用@..@
佔位符,能夠調用Maven屬性resource.delimiter
來重寫之
- 這裏直接貼出了連接,Spring Boot’s Gradle plugin的文檔
- 這裏還介紹了starter的命名格式(若是本身寫starter的話)、分三類介紹了經常使用的starters。
-
- 不要聲明包,不聲明包會致使全部class都在「默認」包下,這樣會致使註解會掃描全部class
- 若是使用推薦的位置,則可使相應的註解免去配置,否則須要配置相應註解
- springboot支持使用java代碼來配置,屬於配置文件的類須要
@Configuration
來修飾
- 配置類沒必要每個都使用
@Configuration
來修飾,也可使用@Import
來批量導入增長的配置類,還可使用@ComponentScan
註解來掃描Spring組件,包括配置類
- 只須要添加一個
@EnableAutoConfiguration
就自動認爲對@Configuration
配置類自動配置
- 若是在配置類中配置了本身的bean,那麼自動配置的相同做用的bean就會被替代(不過有些bean是本身寫的,spring也不知道是否是同一種,這種替代只針對經常使用的依賴,因此仍是須要手動排除一下)
- 經過定義自動配置註解的屬性,如
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
- 使用
@ComponentScan
註解來掃描對應的包發現beans,使用@Autowired
(構造器注入的方式)來自動裝配bean,若是使用推薦的結構組織代碼,則能夠免去對@ComponentScan
註解屬性的配置,若是一個bean只有一個構造器,那麼@Autowired
也能夠省略掉
- 使用
@SpringBootApplication
至關於同時使用 @Configuration
、@EnableAutoConfiguration
、@ComponentScan
這三個註解,註解配置爲默認,同時該註解也提供對@EnableAutoConfiguration
、@ComponentScan
的個性化配置
-
- SpringBoot應用本質上是一個java應用,因此其熱部署本質上是jvm的熱部署,也就是在運行時替換相應的字節碼來實現熱部署,這裏提到了一種完善的解決方案:JRebel。而spring提供的解決方案是
spring-boot-devtools
,實現quick restarts式的熱部署
- 使用這個工具須要先引入依賴項
- 這裏主要講有一些默認屬性如springMVC提供HTTP緩存,這個緩存能夠在
application.properties
中配置,開發的時候並不但願緩存被使用,spring-boot-devtools
會自動應用開發時配置。
-
spring-boot-devtools
會自動restart項目,這裏還介紹了自動restart的條件,以及restart與reload技術上的區別,restart技術是使用兩個類加載器實現,正在開發的類所使用的類加載器替換掉以前的類加載器,而reload是從新加載這個類的字節碼
- 每次restart都會寫一份日誌,這裏介紹如何關閉這個日誌
- 排除restart不須要關注的目錄
- 觸發器文件,Trigger File。用來使項目在特定條件下restart,而不是改變一點源碼就restart,這樣能夠避免使用IDE時持續編譯正在編寫的文件時形成項目不斷restart的尷尬。
- 就是反序列化對象時要使用spring的
ConfigurableObjectInputStream
而不能使用ObjectInputStream
,不少第三方的類庫反序列化時咩有考慮到context classloader
,因此會出問題.
- 啓動時顯示banner+log,很是炫酷 = =...
- 簡單說就是使用特定的SpringApplication來run
- 有些listener能夠被註冊成爲Bean,但這須要這些listener監聽的事件發生在ApplicationContext初始化完成以後。若是這些listener不能被配置爲bean,就須要看看這裏了。
- 這裏介紹了兩種
ApplicationContext
,分別是AnnotationConfigApplicationContext
和AnnotationConfigServletWebServerApplicationContext
- 若是想訪問傳遞給
SpringApplication.run(…)
方法的Arguments,能夠注入一個org.springframework.boot.ApplicationArguments
Bean,能夠對命令行選項進行訪問。
- 在
SpringApplication.run(…)
方法執行後,讓程序執行一次代碼。經過實現ApplicationRunner or CommandLineRunner
接口來實現。這倆區別就在於對命令行選項的訪問方式不一樣。
- 退出的方法也是可編程的
- 外部配置有不少種的方式,這一節比較有用
- 這種配置有利於測試
- SpringApplication會加載這些文件並把配置載入
Environment
-
- 根據處於活動狀態的指定配置文件的不一樣,一個屬性能夠在YAML中被配置屢次
- 就是沒法用
@PropertySource
註解加載
- 就是當指定配置文件處於活動狀態時,讓指定配置文件的同名List覆蓋掉默認配置文件中的List
- 主要介紹
@ConfigurationProperties
註解的使用,使用該註解能夠免去每一個屬性都用@Value
的繁瑣配置,而且這兩個註解還有其餘區別,以及配置文件能夠被註冊爲一個bean,這些都在這一節闡述
-
@Value
是核心容器裏面的功能,與類型安全(type-safe)配置不一樣,沒有其寬鬆的綁定方式和元數據支持,可是卻有後者沒有的SpEL表達式支持
- 前面說到指定配置文件,在這一節對指定配置文件有詳細介紹。spring能夠將配置文件分隔開使不一樣的配置文件在特定的環境中發揮做用,好比生產環境的配置文件在生產環境中起做用。
@Profile
註解就是用來標註當前配置類是那個配置文件Part。使用屬性spring.profiles.active
能夠指定處於活動狀態的配置文件Part有哪些。
-
spring.profiles.active
這個項目屬性和其餘屬性同樣遵照屬性的優先級規則
-
-
-
- 這是springboot爲springMVC提供的自動配置
- SpringMVC使用
HttpMessageConverter
接口轉換HTTP請求和響應
- 從綁定的errors產生用來渲染錯誤信息的錯誤碼,springboot有一個默認的實現
- 這邊的注意頗有用----注:IntelliJ IDEA根據你運行應用的方式會對classpath進行不一樣的排序。在IDE裏經過main方法運行應用,跟從Maven,或Gradle,或打包好的jar中運行相比會致使不一樣的順序,這可能致使Spring Boot不能從classpath下成功地找到模板。若是遇到這個問題,你能夠在IDE裏從新對classpath進行排序,將模塊的類和資源放到第一位。或者,你能夠配置模塊的前綴爲classpath*:/templates/,這樣會查找classpath下的全部模板目錄。
-
-
-
-
-
-
- 使用Java基於Lucene開發的全文檢索服務;是一個獨立的企業級搜索應用服務器;lucene是一個開放源代碼的全文檢索引擎工具包,但它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。
- ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。
- Apache Cassandra是一套開源分佈式數據庫管理系統,混合型非關係數據庫
- 仍是一個數據庫
- LDAP (輕型目錄訪問協議)是一個開放的,中立的,工業標準的應用協議,經過IP協議提供訪問控制和維護分佈式信息的目錄信息。
- 時間序列數據庫
- spring框架對繼承消息中間件(消息系統)提供強大支持
- javax.jms.ConnectionFactory接口提供標準的用於建立javax.jms.Connection的方法,javax.jms.Connection用於和JMS代理(消息中間件)交互
- 高級消息隊列協議(AMQP)是一個用於消息中間件的,平臺無關的,線路級(wire-level)協議
- JSR-303是一個驗證標準,類路徑上存在JSR-303實現(好比Hibernate validator),Bean Validation1.1支持的方法驗證特性就會自動啓用。這容許bean方法的參數和/或者返回值,被標註爲javax.validation約束。也就是說對bean的方法參數與返回值進行驗證
- Hazelcast 使得 Java 程序員更容易開發分佈式計算系統,能夠爲基於jvm環境運行的各類應用提供分佈式集羣和分佈式緩存服務:分佈式」、「集羣服務」、「網格式內存數據」、「分佈式緩存「、「彈性可伸縮服務」
- Quartz調度器,定時任務.
- spring集成
- ava管理擴展(JMX)提供了一個標準的用於監控和管理應用的機制。默認狀況下,Spring Boot將建立一個id爲‘mbeanServer’的MBeanServer,並導出任何被Spring JMX註解(@ManagedResource,@ManagedAttribute,@ManagedOperation)的beans
-
- Spring Boot爲內嵌的Tomcat(8和7),Jetty 9和Undertow提供WebSockets自動配置
- 這個在開發library時比較管用
這部分講述spring對監控和管理生產環境中的應用的支持。git