Spring-ConfigurationClass类
作用:在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类相关推荐
- Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转)
Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转) 参考文章: (1)Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转) (2)https://www. ...
- Spring component-scan类扫描加载过程
2019独角兽企业重金招聘Python工程师标准>>> https://github.com/javahongxi 有朋友最近问到了spring加载类的过程,尤其是基于annotat ...
- Spring工具类的使用
2019独角兽企业重金招聘Python工程师标准>>> Spring-core中提供了大量的工具类,常用的有StringUtils.ObjectUtils.NumberUtils.B ...
- java spring注入 静态方法_java相关:spring为类的静态属性实现注入实例方法
java相关:spring为类的静态属性实现注入实例方法 发布于 2020-3-31| 复制链接 在本篇文章里小妖给大家整理的是关于spring为类的静态属性实现注入实例方法,有需要的朋友们可以参考下 ...
- 浅谈Spring IOC和DI及Spring工厂类
浅谈Spring IOC和DI及Spring的工厂类 文章目录 浅谈Spring IOC和DI及Spring的工厂类 一. IOC 1.什么是IOC 2.为什么使用IOC 传统开发模式的弊端 3. 使 ...
- Spring框架如何加载和定义Spring Bean类?
本篇介绍什么是Spring Bean类,如何创建Bean类,以及如何将Bean类添加到Spring IOC容器.通过本篇的学习,可以达成如下目标. ● 认识Spring Bean类 ● 掌握Bean类 ...
- Spring同一个类事务处理
Spring同一个类事务处理 同一个类不同方法事务可以传播(需要满足事务的前提) 同一个类两个不同方法调用(注解方式) 同一个类两个不同方法调用(注解方式,父方法捕捉了异常) 同一个类两个不同方法调用 ...
- spring同一个类中,一个方法调用另外一个注解(@Transactional)方法时,注解失效
title: "spring同一个类中,一个方法调用另外一个注解(@Transactional)方法时,注解失效" url: "https://wsk1103.githu ...
- Java Spring 工厂类 BeanFactoryAware基本使用 亲测
Java Spring 工厂类 BeanFactoryAware基本使用 1. BaseFactory.java 实现 Spring工厂接口 BeanFactoryAware 2. SearchFac ...
- 521我发誓读完本文,再也不会担心Spring配置类问题了
生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...
最新文章
- 【多标签文本分类】Large Scale Multi-label Text Classification with Semantic Word Vectors
- 17个你必须牢记的Win7快捷键[转]
- 数据结构与算法(C++)-- 算法分析
- Make Them Equal
- jQuery导航切换功能
- ffmpeg文档3:播放声音
- JPA之@GeneratedValue注解
- 说说Java 7中的模块系统基本概念
- Bailian4021 最大乘积【序列处理】
- vmware 网络连接方式的说明
- 《MYSQL必知必会》—10~13.创建计算字段、使用数据处理函数、使用聚集函数汇总数据,使用GROUP BY与HAVING分组数据及过滤
- SuperIndicator 专做轮播图库,没有之一,支持无限循环
- 指针二维二维数组和二重指针 的疑问 二维数组名为什么不能直接赋值给二重指针...
- apk注册机加密_apk软件添加注册机方法 安卓apk添加授权教程
- Java程序员开发软件(工具)清单
- 【SpringBoot】1、创建第一个SpringBoot项目
- 转 Apache Ignite——新一代数据库缓存系统
- 虚拟摄像头之一: android8.1 移植 v4l2loopback 虚拟摄像头
- Python随机生成均匀分布在单位圆内的点
- 【Python】京东自动下单抢购脚本——双十一购物小技巧
热门文章
- 基于matlab的2ask频带传输系统仿真与性能分析,基于MATLAB的2ASK频带传输系统仿真与性能分析汇总...
- 7z 头部错误 数据错误_Vue项目组件数据类型错误处理
- mysql的底层数据结构_MySQL索引底层数据结构实现原理
- 往数组里添加键值对_框架都是花哨的东西!js才是根基,分享一下给原生js数组的操作...
- insert into select 死锁
- 多种系统负载100%方法(高可用测试、性能压测用)
- 外贸业务员会计算机知识,外贸业务员、电子商务
- mysql随机显示记录_mysql随机提取记录数的方法
- centos7 dotnet command not found
- Kotlin入门(18)利用单例对象获取时间