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文件里)
本文转自 手不要乱摸 51CTO博客,原文链接:http://blog.51cto.com/5880861/1970542
SpringBoot中@EnableAutoConfiguration注解的作用相关推荐
- Spring中@AliasFor注解的作用及原理
本文基于Springboot 2.1.6.RELEASE 版本分析. 关于@AliasFor注解,曾提过的一个issue Explicit attribute overrides configured ...
- SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍
SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍 本篇博文将介绍几种如何处理url中的参数的注解@PathVaribale/@Requ ...
- java参数值注入_在springboot中使用注解将值注入参数的操作
后端的许多管理系统需要登陆者的信息,如shiro登陆后,会将登陆者的信息存储在shiro的session,在使用时需要多行代码获取用户信息.可以把获取在shiro中的登陆者信息封装在一个类中,使用时获 ...
- springboot中得注解_Spring以及SpringBoot中的常用的注解小结
一.注解的基本概念 Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法.Annotion(注解)是一个接口,程序可以通过反射来获 ...
- springboot中@scheduled注解使用备注
参考文章: https://cloud.tencent.com/developer/article/1497610 https://blog.csdn.net/Rice_kil/article/det ...
- Spring中常用注解及其作用
1.@Component 它是这些注解里面最普通的一个注解,一般用于把普通pojo实例化到spring容器中. @Controller和@Service和@Repository是它的特殊情况,当一个类 ...
- SpringBoot中condition注解的使用
在项目中,有时会遇到我们的Configuration.Bean.Service等等的bean组件需要依条件按需加载的情况. springboot中提供了一系列@Condition* 注解来处理有条件注 ...
- SpringBoot中常见注解
@Configuration用在类上,让Spring注入被注解的类的实例. @EnableConfigurationProperties(CustomProperty.class) 使使用@Confi ...
- @transaction使自定义注解失效_【完美】SpringBoot中使用注解来实现 Redis 分布式锁...
一.业务背景 有些业务请求,属于耗时操作,需要加锁,防止后续的并发操作,同时对数据库的数据进行操作,需要避免对之前的业务造成影响. 二.分析流程 使用 Redis 作为分布式锁,将锁的状态放到 Red ...
最新文章
- 怎么测试一个人的计算机应用能力,对专业技术人员计算机应用能力考试的思考...
- mac 安装 nginx
- vs2010中编译zint的问题
- Super BOM应用步骤总结
- 采用SwipeFreshLayout+Recyclerview实现下拉刷新和上拉加载更多以及CoordinatorLayout的引入
- node中使用短信验证功能(阿里云为例)
- Linux 命令行提示符路径显示
- mssql 设置自增字段的起始值
- 计算机基础知识问卷,计算机基础知识情况问卷调查
- 了解Google发展的下一代搜索Knowledge Graph:Emily Moxley访谈录
- 【面试个人成长】2021年过半,社招和校招的经验之谈
- LF-YOLO: A Lighter and Faster YOLO for Weld Defect Detection of X-ray Image
- jQuery-动画效果(图片抽奖案例)
- 动力节点 mysql 郭鑫_动力节点 mysql 郭鑫 34道经典的面试题二
- 字符串函数 tirm 的作用
- howler.js音频控制js库
- 【大话数据结构C语言】57 平衡二叉树(AVL树)
- 案例分析|爆款品牌完美日记的KOL投放策略
- csdn官网第一次写博客 一直显示不要使用默认标题
- bigemap 软件百度课程
热门文章
- python工程师薪资坑吗-Python中反人类直觉的特性,你踩过坑吗?
- python和java哪个-Python和Java到底哪个更好?
- python是不是特别垃圾-Python里的垃圾回收机制是什么意思,搞不懂?
- python实训项目-Python开发基础-项目实训-在线投票系统.pptx
- win10计算机如何切换用户名,Win10怎么修改本地账号的用户名 win10本地账户改名图文教程...
- LeetCode Single Number II(位操作)
- 2018-2019 20165237网络对抗 Exp5 MSF基础应用
- Asp.NetCore MVC Web 应用
- Android布局之相对布局——RelativeLayout
- MySQL连接问题【如何解决MySQL连接超时关闭】