springboot 入門教程(3)-運行原理、關鍵註解和配置

    springboot提倡約定優於配置的思想,因此提供了不少默認配置,因此你們纔會發現搭建一個應用會很是簡單,只須要簡單幾行代碼就搞定一個組件的集成。java

    那咱們就來深刻了解下他的原理和關鍵配置。web

一、基本配置

    springboot基本都是經過一個入口類來啓動應用,通常命名爲Application,裏面包含一個main方法,main方法中使用SpringApplication.run(Application.class, args)方法來啓動應用。這個入口類必定要在類上加上一個註解:@SpringBootApplication,這個註解是一個組合註解,都是由哪些註解組合的請你們去看源碼了沒什麼可介紹的。spring

@SpringBootApplication
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

}

    springboot支持兩種配置文件:properties和yml,官方推薦使用yml(我我的習慣了properties),默認配置文件存放在src/mian/resources目錄下,名稱爲:application.properties或application.ymlspringboot

    這兩個配置文件中能配置不少內容,包括springboot本身的和集成第三方時候的一些配置,可是這些配置所有都是有默認值的,只有須要修改的時候才須要去配置。如今就舉幾個你們可能會常常用到的mvc

    a、springboot自帶web容器的默認端口是8080,若是想修改只須要在上述配置文件中加入server.port=8081;app

    b、項目根目錄,springboot自帶的容器啓動後是默認不帶項目名的,若是你想帶上項目名那添加框架

         server.context-path=/taskCenterspring-boot

    以上是在properties中的寫法,在yml中應該是spa

server:
      port:8081
      contextPath:/taskCenter

    starter pom.net

    這裏介紹下springboot最強大的功能,提供大部分企業開發絕大多數場景的starter pom ,也就是集成並默認配置好的第三方組件包,引入starter pom後,springboot就會自動使用默認配置幫咱們配置好。

    官方提供了有好幾十種,有的開源項目爲了支持springboot也提供了starter pom ,詳細的內容請移步Starter POMs詳解,有詳細介紹。      

二、日誌配置

    springboot 支持logging、Log4j,Log4j2和Logback做爲日誌框架,默認使用的是Logback

    logging.file=d:/mylog/log.log

    logging.level.org.springframework.web=DEBUG

三、profile配置

    profile是針對不一樣環境對不一樣配置提供支持的,全局的Profile配置使用application-{profile}.properties

    經過在application.properties中設置spring.profiles.active=prod來指定活動的Profile。

四、運行原理

    關於運行原理咱們仍是從@SpringBootApplication註解開始提及,他是一個組合註解,到底組合了哪些呢?咱們看下源碼:(若是你用的老版本那源碼可能不同,舊的是使用import註解引入了一個EnableAutoConfigurationImportSelector.class的實現類進行自動配置的,新版本多了一個@EnableAutoConfiguration這個註解,其實@EnableAutoConfiguration註解中實現和舊版本同樣也是用的import)

你們能夠看到有一個@EnableAutoConfiguration註解,這個就是SpringBoot最強大的註解沒有之一,是他幫咱們完成了集成的全部默認配置。到底都支持哪些默認配置呢?

進入源碼後咱們能夠看到源碼所在的包是:spring-boot-autoconfigure-1.5.6.RELEASE.jar(版本號根據你實際使用的版本決定),這個包中定義了springboot官方支持的全部自動配置的源代碼。展開看下就大概知道springboot能夠幫咱們自動配置哪些東西了。

就這麼多,夠用了吧,相信你你們進行web開發的時候經常使用的框架都在這裏了,因此springboot就牛逼在這裏,不少之前須要寫不少配置文件才能搞定的,如今只須要引入包,修改幾行配置就能夠集成一個框架。是否是很牛逼啊。(關於註解若是你們不熟的話,請惡補下)

有了@EnableAutoConfiguration這個牛逼的註解,接下來咱們看下springboot到底怎麼實現自動配置的?

一、springboot怎麼知道何時須要自動配置什麼內容呢?其實就是咱們在引入了什麼樣的starter,每引入一個starter,springboot會自動掃描到,而後引入默認配置。

二、從spring4.x引入了強大的條件註解,纔有springboot的自動配置,springboot是利用條件註解判斷何時選擇註解中的什麼內容。

    條件註解位於org.springframework.boot.autoconfigure.condition這個包下,具體每一個註解的含義就很少作介紹了,你們能夠去官方看下。

三、不少時候咱們都須要修改默認配置,這個默認配置包括最簡單的默認參數(前面已經講過了)和java 配置。當咱們須要改變默認配置的邏輯或是加載一些額外的內容,那麼就須要咱們進行單獨的配置。springboot提倡java config,因此在咱們的springboot工程裏面通常都會有單獨的一個目錄專門用於修改默認配置或是新增默認配置。

大概流程就是這樣了,接下來咱們梳理下

    springboot經過@SpringApplication註解啓動,啓動後經過@EnableAutoConfiguration註解和咱們引入到工程中的start進行識別(利用了條件註解),識別出哪些內容須要完成自動配置,配置完成之後啓動spring容器。若是你想看看springboot給咱們默認配置了哪些內容,你能夠在啓動的時候加上-debug參數,控制檯中就會出現#Atuo Configure  下方的內容就是默認配置項。

   好了,運行的原理(準備期的說應該是流程,並非什麼理論概念)就介紹到這裏,下一篇咱們就重點講下springboot中怎麼使用spring、spring mvc、serlvlet、fillter這些web開發的內容。

相關文章
相關標籤/搜索