springboot自动装配原理

springboot自动装配简单来说是springboot自动的装载第三方组件的Bean 到IOC容器里面,不需要开发人员再去写Bean的配置。

springboot自动装配详细原理 

Spring Boot 项目中的引导类上有一个注解 @SpringBootApplication ,这个注解是对三个注
解进行了封装,分别是:
  • @SpringBootConfiguration
  • @EnableAutoConfiguration
  • @ComponentScan
其中 @EnableAutoConfiguration 是实现自动化配置的核心注解,主要由@AutoConfigurationPackage , @Import(AutoConfigurationImportSelector.class) 这两个注解组成。 该注解通过 @Import 注解导入对应的配置选择器。选择配置器通过 SpringFactoriesLoader 从类路径下去读取 META-INF/spring.factories 文件信息,内部就是读取了 该项目和该项目引用的 Jar 的的 classpath 路径下 META-INF/spring.factories 文件 文件中的 所配 置的类的全类名。 以此全限定类名来找到这些配置类,然后根据条件注解 @ConditionalOnClass限定当前容器中没有这个类型的 Bean 的情况下,才进行 Bean 的创建和装载(这里也要用到@AutoConfigurationPackage注解帮忙)
@AutoConfigurationPackage 用于将启动类所在的包里面的所有组件注册到 spring 容器。其与@ComponentScan搭配使用,实现 Bean 的动态加载
条件判断会有像 @ConditionalOnClass 这样的注解,限定当前容器中没有这个类型的 Bean 的情况下,才进行 Bean 的创建和装载

自动装配主要依靠三个核心的关键技术:

引入starter 

启动依赖组件的时候,组件必须包含@Configuration配置类,配置类需要@Bean这个注解去声明需要装配到IOC容器的Bean对象

查找第三方配置类

配置类放到第三方jar包,springboot通过约定大于配置,去把这个配置类的全路径放在classpath:/META-INF/spring.factories文件里面,这样可以知道第三方的配置类的位置,上面步骤通过SpringFactoriesLoader去完成查找第三方jar包的位置。

动态加载

springboot获取第三方jar声明的配置类以后,通过ImportSelector这样一个接口,实现对配置类的动态加载,完成自动装配的动作。

总结

SpringBoot 是约定优于配置这一理念下的产物,所以在很多的地方,都会看到这类的思想。它的出现,让开发人员更加聚焦在了业务代码的编写上,而不需要去关心和业务无关的配置。 其实,自动装配的思想,在 SpringFramework3.x 版本里面的@Enable 注解,就有了 实现的雏形@Enable 注解是模块驱动的意思,我们只需要增加某个@Enable 注解, 就自动打开某个功能,而不需要针对这个功能去做 Bean 的配置,@Enable 底层也是 帮我们去自动完成这个模块相关 Bean 的注入
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值