一、简介
在搭建springboot应用的时候,无需像之前spring的时候,要一堆繁琐的配置文件之类的。一个main的方法,就能把springboot的项目run起来。和其他框架整合也是非常的简单,只需要使用到Enablexxxxx注解就可以搞起来。
二、原理
springboot的自动配置入手可以先从启动类入手:
@SpringBootApplication:SpringBoot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot需要运行这个类的main方法来启动SpringBoot的应用;
2.1 SpringBootApplication
@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) })
// AutoConfigurationExcludeFilter的作用是扫描到的配置类名字如果在自动配置类名集合中,就不解析
public @interface SpringBootApplication {
- @SpringBootConfiguration:Spring Boot的配置类;
- 标注在某个类上,表示这是一个Spring Boot的配置类;
- @Configuration:配置类上来标注这个注解;
- 配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component
- @EnableAutoConfiguration:开启自动配置功能;
- 以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置,会帮我们自动去加载 自动配置类
- @ComponentScan : 扫描包
- 相当于在spring.xml 配置中 但是并没有指定basepackage,如果没有指定spring底层会自动扫描当前配置类所有在的包
- TypeExcludeFilter
- springboot对外提供的扩展类, 可以供我们去按照我们的方式进行排除
- AutoConfigurationExcludeFilter
- 排除所有配置类并且是自动配置类中里面的其中一个
2.2 @EnableAutoConfiguration
这个注解里面,最主要就是@EnableAutoConfiguration,直白的名字,一眼就知道是它来操作开启自动配置。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)