18. Using the @SpringBootApplication annotation
很多Spring Boot开发者经常使用@Configuration
,@EnableAutoConfiguration
,@ComponentScan
注解他们的main类,由于这些注解如此频繁地一块使用(特别是遵循以上最佳实践的时候),Spring Boot就提供了一个方便的@SpringBootApplication
注解作为代替。
@SpringBootApplication
注解等价于以默认属性使用@Configuration
,@EnableAutoConfiguration
和@ComponentScan
:
package com.example.myproject;
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
属性的别名(aliases)。换句话说,虽然@SpringBootApplication
替代了其他两个,但是我们依然可以像在@SpringBootApplication
配置@EnableAutoConfiguration
和@ComponentScan
里的属性,比如@SpringBootApplication
的exclude
属性对应@EnableAutoConfiguration
的exclude
属性