springboot 2.x是如何实现自动配置(随笔记)

springboot 2.x 自动配置的实现及原理

在面对这个问题之前,先祭奠一下我的上次面试。。。太过悲惨,不忍直视。阿米头佛 

1. 什么是自动配置

简单来说,就是将传统的ssm项目中,我们需要在xml中写入大量配置文件,用来配置我们所需的组件。而springboot帮助我们完成了简化,一种更便利的开发方式:自动配置。在自动配置中,我们只需要引入特定的stater即可,其他需要的组件springboot会自动帮我们加入到容器中,这就是自动配置。

2. springboot 是如何实现自动配置的

首先每一个springboot都有一个至关重要的注解
@SpringBootApplication

@SpringBootApplication
public class SpringbootApplication {

    public static void main(String[] args) {

        SpringApplication.run(SpringbootApplication.class,args);
    }
}

这是每个springboot项目启动类上必要的注解,那自动配置的奥秘也就隐藏在其中,跟踪进入这个注解查看源码
@SpringboootApplication源码
继续查看**@EnableAutoConfiguration**在这里插入图片描述
其中核心部分就是引入了 AutoConfigurationImportSelector这个配置类,这个类中的核心方法就是 selectImports(),它表明哪些自动配置类是要加入容器中的。在这里插入图片描述
继续追踪源码,可以看到getAutoConfigurationEntry()这个方法,其中configurations存放的数据就是加入容器的自动配置类的完整路径包
在这里插入图片描述
而从getCandidateConfigurations()方法中,我们可以看到自动配置的包路径是存放在META_INF/spring.factories文件中
在这里插入图片描述
spring-boot-autoconfigure包下META_INF/spring.factories 如下在这里插入图片描述

3. application.properties 中的配置是如何装配的
首先 @EnableAutoConfigration 这个注解是简介隐藏在 @SpringBootApplication 中的,通过这个注解SpringApplication.run() 的内部会执行 selectImports() 方法,寻找 META-INF/spring.factores 文件,读取里面的文件配置,将一级写好的配置类有选择的加载到spring容器中,并按照事先约定在 appliction.properties 中配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值