一、入口类和@SpringBootApplication
Spring Boot项目一般有*Application入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法。
@SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解。
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class} ), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )} ) public @interface SpringBootApplication {……}
该注解主要组合了以下注解:
1、@SpringBootConfiguration:这是Spring Boot项目的配置注解,也是一个组合注解。
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Configuration public @interface SpringBootConfiguration { }在Spring Boot项目中推荐使用@SpringBootConfiguration替代@Configuration
2、@EnableAutoConfiguration:启用自动配置,该注解会使用Spring Boot根据项目中依赖的jar包自动配置项目的配置项。
例如:添加spring-boot-starter-web依赖,项目会引入springmvc的依赖,Spring Boot就会自动配置Tomcat和SpringMVC
3、ComponentScan:默认扫描@SpringBootApplication所在类的同级目录以及它的子目录。
二、关闭自动配置
Spring Boot会根据项目中的jar包依赖,自动做出配置,Spring Boot支持的自动配置相当多,如果不需要自动配置,可关闭某一项自动配置。
@SpringBootApplication(exclude=())