在这个注解中,最重要的是它导入了一个类EnableAutoCo"/>

SpringBoot中@EnableAutoConfiguration注解的作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot中@EnableAutoConfiguration注解的作用相关的知识,希望对你有一定的参考价值。

技术分享

在这个注解中,最重要的是它导入了一个类EnableAutoConfigurationImportSelector

它是一个ImportSelector接口的实现类,而ImportSelector接口中的selectImports方法所返回的类将

被Spring容器管理起来。

技术分享


再看AutoConfigurationImportSelector类,它不光实现了ImportSelector接口,还实现了很多其它的Aware接口,分别表示在某个时机会被回调,我们看一下Aware接口就知道了。

技术分享


技术分享

我们可以知道,所有的aware都优先于selectImports方法执行,也就是说selectImports方法最后执行,那么在它执行的时候所有需要的资源都已经获取到了(就是那四个成员变量)

那我们看看selectImports都干了什么

技术分享

看图说话:

1、加载META-INF/spring-autoconfigure-metadata.properties文件

2、获取注解的属性及其值(PS:注解指的是@EnableAutoConfiguration注解)

3、在classpath下所有的META-INF/spring.factories文件中查找org.springframework.boot.autoconfigure.EnableAutoConfiguration的值,并将其封装到一个List中返回

4、对上一步返回的List中的元素去重、排序

5、依据第2步中获取的属性值排除一些特定的类

6、对上一步中所得到的List进行过滤,过滤的依据是条件匹配。这里用到的过滤器是org.springframework.boot.autoconfigure.condition.OnClassCondition最终返回的是一个ConditionOutcome[]数组。(PS:很多类都是依赖于其它的类的,当有某个类时才会装配,所以这次过滤的就是根据是否有某个class进而决定是否装配的。这些类所依赖的类都写在META-INF/spring-autoconfigure-metadata.properties文件里


技术分享

技术分享

技术分享

技术分享



技术分享




本文出自 “十里稻花香” 博客,请务必保留此出处http://5880861.blog.51cto.com/5870861/1970542

以上是关于SpringBoot中@EnableAutoConfiguration注解的作用的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot 高级 原理分析 -- @Import注解

SpringBoot 高级 原理分析 -- @Enable*注解@Import注解

Spring构建Springboot项目 实现restful风格接口

SpringBoot 高级 原理分析 -- 自定义redis-starter

spring boot 约定大于配置详解

Java从入门到天黑|06高质量男性SpringBoot入门及原理(基础总结版,强烈建议收藏)