18. Using the @SpringBootApplication Annotation
许多Spring 开发人员喜欢他们的应用程序使用自动配置、组件扫描并且可以定义额外的配置应用程序类.可以使用单个@SpringBootApplication
注解来启用这三个特性:
@EnableAutoconfiguration
: 开启Spring Boot自动配置.@ComponentScan
: 在程序所在的包及子包开启@Component
组件扫描.@Configuration
: 开启在上下文注册额外的实例或者导入额外的配置类.
@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);
}
}
Note
@SpringBootApplication
注解也提供别名去配置@EnableAutoConfiguration
和@ComponentScan
注解的属性.Note
这些特性都不是强制性的,您可以选择使用它支持的任何特性来替换这个单一注解.例如,您可能不希望在应用程序中使用组件扫描,如下配置: 在本例中,应用程序就像其他Spring Boot应用程序一样,不自动扫描带
@Component
注解类,而用户定义的bean实例是通过@Import
显式导入的. ```java 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);
}
} ```