码迷,mamicode.com
首页 > 编程语言 > 详细

Springboot自动配置

时间:2020-11-04 19:24:43      阅读:45      评论:0      收藏:0      [点我收藏+]

标签:source   详解   标记   逻辑   组合   epo   cti   isa   mybatis   

@SpringBootApplication

这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。实际上这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般都是一起使用,所以Spring Boot提供了一个统一的注解@SpringBootApplication。

@EnableAutoConfiguration

允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean。

如:当前类路径下有 Mybatis 这个 JAR 包,MybatisAutoConfiguration 注解就能根据相关参数来配置 Mybatis 的各个 Spring Bean。

@EnableAutoConfiguration实现的关键在于引入了AutoConfigurationImportSelector,其核心逻辑为selectImports方法,逻辑大致如下:

 ● 从配置文件META-INF/spring.factories加载所有可能用到的自动配置类;

 ● 去重,并将exclude和excludeName属性携带的类排除;

 ● 过滤,将满足条件(@Conditional)的自动配置类返回;

@Configuration

用于定义配置类,指出该类是 Bean 配置的信息源,相当于传统的xml配置文件,一般加在主类上。如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。

@ComponentScan

组件扫描。让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")为该类注入配置文件中相应的值

Springboot自动配置

标签:source   详解   标记   逻辑   组合   epo   cti   isa   mybatis   

原文地址:https://www.cnblogs.com/liuqiuyu/p/13926461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!