标签:source 详解 标记 逻辑 组合 epo cti isa mybatis
这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。实际上这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般都是一起使用,所以Spring Boot提供了一个统一的注解@SpringBootApplication。
允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean。
如:当前类路径下有 Mybatis 这个 JAR 包,MybatisAutoConfiguration 注解就能根据相关参数来配置 Mybatis 的各个 Spring Bean。
@EnableAutoConfiguration实现的关键在于引入了AutoConfigurationImportSelector,其核心逻辑为selectImports方法,逻辑大致如下:
● 从配置文件META-INF/spring.factories加载所有可能用到的自动配置类;
● 去重,并将exclude和excludeName属性携带的类排除;
● 过滤,将满足条件(@Conditional)的自动配置类返回;
用于定义配置类,指出该类是 Bean 配置的信息源,相当于传统的xml配置文件,一般加在主类上。如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。
组件扫描。让spring Boot扫描到Configuration类并把它加入到程序上下文。
@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。
@EnableAutoConfiguration注解会将类路径下所有jar包中的META-INF/spring.factories的配置的所有自动配置类添加到IOC容器中,模样为XXXAutoConfiguration。这是一个自动配置类(有Configuration标记,意味着它可以向IOC容器中添加组件(添加组件就是配bean),他会把对应的properties类的值与配置文件中定义的值所绑定,并将这个properties类添加到IOC容器中,所以想要更改的话更改配置文件即可,配置文件中所以可以设置的值都参考相应的properties类(因为配置文件就是用来给properties类赋值)由此注解完成功能@EnableConfigurationProperties(HttpEncodingProperties.class)),同时这自身也是一个组件(被@EnableAutoConfiguration标注的类添加到ioc容器中)。
? 1)、SpringBoot启动会加载大量的自动配置类
? 2)、我们看我们需要的功能有没有SpringBoot默认写好的自动配置类;
? 3)、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件有,我们就不需要再来配置了)
? 4)、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这些属性的值;
xxxxAutoConfigurartion:自动配置类;
给容器中添加组件
xxxxProperties:封装配置文件中相关属性;
在XXXProperties类上使用@ConfigurationProperties(prefix = "xx.xx")为该类注入配置文件中相应的值
标签:source 详解 标记 逻辑 组合 epo cti isa mybatis
原文地址:https://www.cnblogs.com/liuqiuyu/p/13926461.html