許多Spring Boot開發人員喜歡他們的應用程序使用自動配置、組件掃描,並可以在他們的「應用程序類」上定義額外的配置,能夠使用一個@SpringBootApplication
註解來啓用這三個特性:spring
@EnableAutoConfiguration
:啓用Spring Boot的自動配置機制 @ComponentScan
:在應用程序所在的包上啓用@Component
掃描(參見最佳實踐)@Configuration
:容許在上下文中註冊額外的bean或導入額外的配置類@SpringBootApplication
註解與使用@Configuration
、@EnableAutoConfiguration
和@ComponentScan
的默認屬性等效,以下例所示:segmentfault
package com.example.myapplication; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
@SpringBootApplication
還提供別名來定製@EnableAutoConfiguration
和@ComponentScan的屬性。
這些特性都不是強制性的,你能夠選擇用它所支持的任何特性來替換這個註解,例如,你可能不想在應用程序中使用組件掃描:
package com.example.myapplication; import org.springframework.boot.SpringApplication; import org.springframework.context.annotation.ComponentScan import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @Configuration @EnableAutoConfiguration @Import({ MyConfig.class, MyAnotherConfig.class }) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
在本例中,Application
和其餘Spring Boot應用程序同樣,只是沒有自動檢測到@component
- 註解類,而用戶定義的bean是顯式導入的(參見@Import
)。app