使用@SpringBootApplication Annotation

许多Spring Boot开发人员喜欢他们的应用程序使用自动配置,组件扫描,并能够在他们的“应用程序类”上定义额外的配置。@SpringBootApplication可以使用单个 注释来启用这三个功能,即:

  • @EnableAutoConfiguration:启用Spring Boot的自动配置机制
  • @ComponentScan@Component在应用程序所在的包上启用扫描(请参阅最佳实践
  • @Configuration:允许在上下文中注册额外的bean或导入其他配置类

@SpringBootApplication注释是相当于使用@Configuration@EnableAutoConfiguration以及@ComponentScan与他们的默认属性,如显示在下面的例子:

1
2
3
4
5
6
7
8
9
10
11
12
package com.example.myapplication;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//相当于@Configuration,@EnableAutoConfiguration和@ComponentScan一起使用
@SpringBootApplication
public class Application {
public static void main(String [] args){
SpringApplication.run(Application .class,args);
}
}

@SpringBootApplication还提供了别名定制的属性 @EnableAutoConfiguration@ComponentScan

这些功能都不是必需的,您可以选择通过它启用的任何功能替换此单个注释。例如,您可能不希望在应用程序中使用组件扫描:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> 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)。