18. 使用@SpringBootApplication注解
许多Spring Boot开发者喜欢他们的应用使用自动配置,组件扫描和可以定义额外的配置在它们的“application class”上。一个单独的@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)。
