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 @ComponentScanpublic 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);
}
} ```
