18. 使用@SpringBootApplication注解
许多Spring Boot开发人员喜欢他们的应用程序使用自动配置、组件扫描,并能够在他们的“应用程序类”上定义额外的配置,可以使用一个@SpringBootApplication
注解来启用这三个特性:
-
@EnableAutoConfiguration
:启用Spring Boot的自动配置机制 -
@ComponentScan
:在应用程序所在的包上启用@Component
扫描(参见最佳实践) -
@Configuration
:允许在上下文中注册额外的bean或导入额外的配置类
@SpringBootApplication
注解与使用@Configuration
、@EnableAutoConfiguration
和@ComponentScan
的默认属性等效,如下例所示:
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
)。