作用:在spring容器中,又叫Model,是不是很奇怪?我也不知道为什么叫Model,我是根据ConfigurationClassBeanDefinitionReader类的loadBeanDefinitions方法,来推测出,spring认为ConfigurationClass实例叫Model的,如果一个bean实例是configuration class(概念在下面),那么这个类就会被封装成ConfigurationClass(类似spring容器会把所有bean封装成BeanDefinition的概念一样),那么封装成ConfigurationClass又有什么用呢?根据我目前掌握的有限知识,spring的aop就是对ConfigurationClass一顿各种操作,来实现的,更具体的以后在补

时机:在ConfigurationClassPostProcessor类processConfigBeanDefinitions方法中,会循环当前容器中所有的Bean实例,然后使用ConfigurationClassUtils类的checkConfigurationClassCandidate方法挨个判断是否是configuration class,如果是,则封装成ConfigurationClass

什么叫configuration class
1.带有@Configuration注解的类,那么这个类叫做full configuration(我自己翻译成完全配置),这是一个configuration class
2.带有@Component,@ComponentScan,@Import,@ImportResource,@Bean 5个注解中的任一个,那么这个类叫做lite configuration(我自己翻译成精简配置),这是一个configuration class

根据以上已知条件,其实我们自己就可以用java.reflect包下的各种反射机制进行判断,但是spring为我们提供了一个工具类来判断,这个工具类就是ConfigurationClassUtils类,判断的方法是checkConfigurationClassCandidate方法

NOTE:在@Bean注解的javadoc中有这么一句话
@Bean methods may also be declared within classes that are notannotated with @Configuration. For example, bean methods may be declaredin a @Component class or even in a plain old class. In such cases,a @Bean method will get processed in a so-called ‘lite’ mode.
@Bean方法也可以在没有用@Configuration注释的类中声明。例如,bean方法可以在@Component类中声明,甚至可以在普通的旧类中声明。在这种情况下,@Bean方法将以所谓的“lite”模式处理。

Spring-ConfigurationClass类相关推荐

  1. Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转)

    Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转) 参考文章: (1)Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转) (2)https://www. ...

  2. Spring component-scan类扫描加载过程

    2019独角兽企业重金招聘Python工程师标准>>> https://github.com/javahongxi 有朋友最近问到了spring加载类的过程,尤其是基于annotat ...

  3. Spring工具类的使用

    2019独角兽企业重金招聘Python工程师标准>>> Spring-core中提供了大量的工具类,常用的有StringUtils.ObjectUtils.NumberUtils.B ...

  4. java spring注入 静态方法_java相关:spring为类的静态属性实现注入实例方法

    java相关:spring为类的静态属性实现注入实例方法 发布于 2020-3-31| 复制链接 在本篇文章里小妖给大家整理的是关于spring为类的静态属性实现注入实例方法,有需要的朋友们可以参考下 ...

  5. 浅谈Spring IOC和DI及Spring工厂类

    浅谈Spring IOC和DI及Spring的工厂类 文章目录 浅谈Spring IOC和DI及Spring的工厂类 一. IOC 1.什么是IOC 2.为什么使用IOC 传统开发模式的弊端 3. 使 ...

  6. Spring框架如何加载和定义Spring Bean类?

    本篇介绍什么是Spring Bean类,如何创建Bean类,以及如何将Bean类添加到Spring IOC容器.通过本篇的学习,可以达成如下目标. ● 认识Spring Bean类 ● 掌握Bean类 ...

  7. Spring同一个类事务处理

    Spring同一个类事务处理 同一个类不同方法事务可以传播(需要满足事务的前提) 同一个类两个不同方法调用(注解方式) 同一个类两个不同方法调用(注解方式,父方法捕捉了异常) 同一个类两个不同方法调用 ...

  8. spring同一个类中,一个方法调用另外一个注解(@Transactional)方法时,注解失效

    title: "spring同一个类中,一个方法调用另外一个注解(@Transactional)方法时,注解失效" url: "https://wsk1103.githu ...

  9. Java Spring 工厂类 BeanFactoryAware基本使用 亲测

    Java Spring 工厂类 BeanFactoryAware基本使用 1. BaseFactory.java 实现 Spring工厂接口 BeanFactoryAware 2. SearchFac ...

  10. 521我发誓读完本文,再也不会担心Spring配置类问题了

    生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...

最新文章

  1. 【多标签文本分类】Large Scale Multi-label Text Classification with Semantic Word Vectors
  2. 17个你必须牢记的Win7快捷键[转]
  3. 数据结构与算法(C++)-- 算法分析
  4. Make Them Equal
  5. jQuery导航切换功能
  6. ffmpeg文档3:播放声音
  7. JPA之@GeneratedValue注解
  8. 说说Java 7中的模块系统基本概念
  9. Bailian4021 最大乘积【序列处理】
  10. vmware 网络连接方式的说明
  11. 《MYSQL必知必会》—10~13.创建计算字段、使用数据处理函数、使用聚集函数汇总数据,使用GROUP BY与HAVING分组数据及过滤
  12. SuperIndicator 专做轮播图库,没有之一,支持无限循环
  13. 指针二维二维数组和二重指针 的疑问 二维数组名为什么不能直接赋值给二重指针...
  14. apk注册机加密_apk软件添加注册机方法 安卓apk添加授权教程
  15. Java程序员开发软件(工具)清单
  16. 【SpringBoot】1、创建第一个SpringBoot项目
  17. 转 Apache Ignite——新一代数据库缓存系统
  18. 虚拟摄像头之一: android8.1 移植 v4l2loopback 虚拟摄像头
  19. Python随机生成均匀分布在单位圆内的点
  20. 【Python】京东自动下单抢购脚本——双十一购物小技巧

热门文章

  1. 基于matlab的2ask频带传输系统仿真与性能分析,基于MATLAB的2ASK频带传输系统仿真与性能分析汇总...
  2. 7z 头部错误 数据错误_Vue项目组件数据类型错误处理
  3. mysql的底层数据结构_MySQL索引底层数据结构实现原理
  4. 往数组里添加键值对_框架都是花哨的东西!js才是根基,分享一下给原生js数组的操作...
  5. insert into select 死锁
  6. 多种系统负载100%方法(高可用测试、性能压测用)
  7. 外贸业务员会计算机知识,外贸业务员、电子商务
  8. mysql随机显示记录_mysql随机提取记录数的方法
  9. centos7 dotnet command not found
  10. Kotlin入门(18)利用单例对象获取时间