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

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

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

    @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan public class Application {

    1. public static void main(String[] args) {
    2. SpringApplication.run(Application.class, args);
    3. }

    }

    1. > ![info.svg](https://cdn.nlark.com/yuque/0/2020/svg/2728045/1603504009943-b5acd1f5-25af-4c75-ad8e-3d9806534e90.svg#align=left&display=inline&height=32&margin=%5Bobject%20Object%5D&name=info.svg&originHeight=32&originWidth=32&size=1203&status=done&style=none&width=32)
    2. > `@SpringBootApplication`还提供了别名来定制`@EnableAutoConfiguration``@ComponentScan`的属性。
    3. > ![info.svg](https://cdn.nlark.com/yuque/0/2020/svg/2728045/1603504041781-300d3bdb-8dae-4e10-a11f-770980fa6214.svg#align=left&display=inline&height=32&margin=%5Bobject%20Object%5D&name=info.svg&originHeight=32&originWidth=32&size=1203&status=done&style=none&width=32)
    4. > 这些功能都不是强制性的,您可以选择用它启用的任何功能替换此单个注释。例如,您可能不想在应用程序中使用组件扫描或配置属性扫描:
    5. ```java
    6. package com.example.myapplication;
    7. import org.springframework.boot.SpringApplication;
    8. import org.springframework.context.annotation.ComponentScan
    9. import org.springframework.context.annotation.Configuration;
    10. import org.springframework.context.annotation.Import;
    11. @Configuration(proxyBeanMethods = false)
    12. @EnableAutoConfiguration
    13. @Import({ MyConfig.class, MyAnotherConfig.class })
    14. public class Application {
    15. public static void main(String[] args) {
    16. SpringApplication.run(Application.class, args);
    17. }
    18. }

    在此示例中,Application与其他任何Spring Boot应用程序一样,除了不会自动检测被@Component@ConfigurationProperties注解的类,并且显式导入用户定义的Bean(请参阅参考资料@Import)。