使用 SpringBoot 之后,讓一個整合了 SpringMVC 的 WEB 工程開發變得非常簡單,那些繁雜的配置都消失不見了,這是如何做到的?
查看 main 方法的啟動類
注解:@SpringBootApplication
,run 方法:SpringApplication.run()
@SpringBootApplication
查看@SpringBootApplication源碼,如下圖所示:
在源碼當中有3個比較重點的注解, 我上圖已經標記出來了
@SpringBootConfiguration
查看 @SpringBootConfiguration
源碼
在這個注解上面,又有一個 @Configuration
注解,這個注解的作用就是聲明當前類是一個 配置類
,然后 Spring 會自動掃描到添加了 @Configuration
的類,讀取其中的配置信息,而 @SpringBootConfiguration
是用來聲明當前類是 SpringBoot
應用的配置類,項目中只能有一個。所以一般我們無需自己添加。
@EnableAutoConfiguration
開啟自動配置,告訴 SpringBoot 基於所添加的依賴,去 猜測
你想要如何配置 Spring。比如我們引入了 spring-boot-starter-web
,而這個啟動器中幫我們添加了 tomcat、SpringMVC 的依賴, 此時自動配置就知道你是要開發一個 web
應用,所以就幫你完成了 web 及 SpringMVC 的默認配置了!SpringBoot 內部對大量的第三方庫或 Spring 內部庫進行了默認配置,這些配置是否生效,取決於我們是否引入了對應庫所需的依賴,如果有那么默認配置就會生效,我們使用 SpringBoot 構建一個項目,只需要引入對應框架所需的依賴,配置就可以交給 SpringBoot 處理了。
@ComponentScan
配置組件掃描的指令,提供了類似與 <context:component-scan>
標簽的作用,通過 basePackageClasses
或者 basePackages
屬性來指定要掃描的包。如果沒有指定這些屬性,那么將從聲明這個注解的類所在的包開始掃描包及子包。而我們的 @SpringBootApplication
注解聲明的類就是 main 函數所在的啟動類,因此掃描的包是該類所在包及其子包。因此,一般啟動類會放在一個比較前的包目錄中。