了解了ImportSelector和ImportBeanDefinitionRegistrar后,对于EnableAutoConfiguration的理解就容易一些了

它会通过import导入第三方提供的bean的配置类:AutoConfigurationImportSelector@Import(AutoConfigurationImportSelector.class)

从名字来看,可以猜到它是基于ImportSelector来实现基于动态bean的加载功能。之前我们讲过Springboot @Enable*注解的工作原理ImportSelector接口selectImports返回的数组(类的全类名)都会被纳入到spring容器中。

那么可以猜想到这里的实现原理也一定是一样的,定位到AutoConfigurationImportSelector这个类中的selectImports方法

本质上来说,其实EnableAutoConfiguration会帮助springboot应用把所有符合@Configuration配置都加载到当前SpringBoot创建的IoC容器,而这里面借助了Spring框架提供的一个工具类SpringFactoriesLoader的支持。以及用到了Spring提供的条件注解@Conditional,选择性的针对需要加载的bean进行条件过滤

@EnableAutoConfiguration注解的实现原理相关推荐

  1. Spring中重要的一些注解及其实现原理

    Spring中重要的一些注解及其实现原理 1.启动类@SpringBootApplication注解: @SpringBootApplication public class StartEurekaA ...

  2. Spring Boot注解的运行原理

    Spring Boot 是一个基于 Spring Framework 的开源框架,通过简化配置和开发过程,使 Spring 应用程序的开发变得更加快速和便捷.在 Spring Boot 中,注解是非常 ...

  3. SpringBoot中@EnableAutoConfiguration注解的作用

    在这个注解中,最重要的是它导入了一个类EnableAutoConfigurationImportSelector 它是一个ImportSelector接口的实现类,而ImportSelector接口中 ...

  4. Spring框架你敢写精通,面试官就敢问@Autowired注解的实现原理

    面试官:Spring框架中的@Autowired注解可以标注在哪些地方? 小小白:@Autowired注解可以被标注在构造函数.属性.setter方法或配置方法上,用于实现依赖自动注入. 面试官:有没 ...

  5. Java反射自定义注解底层设计原理

    文章目录 一.反射 1. 反射概念 2. 反射机制的优缺点 3. 反射的用途 4. 反射技术的使用 5. 反射常用的Api 6. 反射执行构造函数 7. 反射执行给属性赋值 8. 反射执行调用方法 二 ...

  6. (转)编码剖析@Resource注解的实现原理

    http://blog.csdn.net/yerenyuan_pku/article/details/52860046 上文我们已经学会使用@Resource注解注入属性.学是学会了,但也仅限于会使用 ...

  7. Spring : @EnableAutoConfiguration注解

    1.美图 2.概述 @EnableAutoConfiguration注解使自动配置生效.用于帮助SpringBoot应用将所有符合条件的@SpringBootConfiguration.@Config ...

  8. @enableautoconfiguration注解作用_如何让代码变“高级”-Spring组合注解提升代码维度(这么有趣)...

    [如何让代码变"高级"]-Spring组合注解提升代码维度 "致"高级"工程师(BUG工程师) 一颗折腾的心:heartpulse: 原创不易,点个赞 ...

  9. java中注解动态传参_Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性)...

    Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性)java 前言:因为前段时间忙于写接口,在接口中须要作不少的参数校验,本着简洁.高效的原则,便写了这个小工具供本身使 ...

最新文章

  1. NoSQL生态系统——hash分片和范围分片两种分片
  2. win10访问win7的共享文件夹
  3. 深入学习Redis(4):哨兵
  4. 再快的86也追不上会漂移的无人汽车
  5. 使用python编写自己的进程调试工具
  6. android 时间差 秒_Android 根据两个时间戳计算时间差(亲测可用)
  7. python 读取合并单元格 视频_Python如何使用xlrd实现读取合并单元格
  8. 多表查询,自连接,子查询
  9. 手机格斗网游该如何避免延迟
  10. Mybatis 动态传入order by 参数排序无效
  11. HP 6L WIN7 WIN8 驱动
  12. 3种顺序排序方法。简单排序是指时间复杂度为O(n^2)的排序方法。
  13. 优锘科技:物联森友会发布助物联网企业加速成长
  14. kilo meg giga tera peta exa zetta yotta
  15. 解决PowerShell上运行脚本被禁用错误
  16. html页面内检索,如何用 javascript 实现html页面的关键字搜索?
  17. (干货)备战2021年软考中级网络工程师-04知识产权与标准化
  18. 7的整除特征 三位一截_小学数学竞赛七、数的整除特征(一)
  19. cmd命令查询电脑序列号_如何使用指令提示符查看电脑序列号
  20. “外卖式”售后服务体验来袭 沃丰科技ServiceGo让售后服务更智能

热门文章

  1. html5--3.2 input元素(1)
  2. eclipse/myeclipse选中编辑区域文件,Package Explorer定位文件所在项目及文件夹
  3. codeforces 689B Mike and Shortcuts 最短路
  4. Developer Express 中Gridcontrol获取选中行单元格的值
  5. delphi开发日志——基窗体,使用面向对象编程的编程思想创建基类
  6. React Native的安装和初始化(android /ios)
  7. 基于Swoole开发PHP扩展
  8. 存储管理之页式、段式、段页式存储
  9. php session/完整判断是否https/对象与数组互转/文件下载
  10. 各种版本的ST-LINK仿真器