spring重点后置处理器
1. DefaultListableBeanFactory的作用:
默认实现了ListableBeanFactory和BeanDefinitionRegistry接口,基于bean definition对象,是一个成熟的bean factroy。
最典型的应用是:在访问bean前,先注册所有的definition(可能从bean definition配置文件中)。使用预先建立的bean定义元数据对象,从本地的bean definition表中查询bean definition因而将不会花费太多成本。
DefaultListableBeanFactory既可以作为一个单独的beanFactory,也可以作为自定义beanFactory的父类。
2.ConfigurationClassPostProcessor最重要的核心后置处理器之一
a、核心流程的入口
b、注解的收集
c、ImportSelector接口和DeferredImportSelector接口和ImportBeanDefinitionRegistrar接口
d、其他注解的收集
e、注册BeanDefinition
f、处理@Configuration注解
1、解析被@Configuration修饰的配置类
这里是首先是启动类加入了容器,所以只有启动类扫描到@Configuration
parse().doProcessConfigurationClass()会解析启动类其它@PropertySource、@ComponentScan、@Import、@ImportResource、@Bean其它注解
2、解析@ComponentScan扫描的包
解析到启动类没有配置默认basePackages,会把启动类包路径作为basePackages
if (basePackages.isEmpty()) {
basePackages.add(ClassUtils.getPackageName(declaringClass));
}
然后会doScan()扫描目录下所有class,判断是否@component(@servic、@controller等等底层都是@component)注解,有则加入beanDefinitions
3、解析被@Import注解修饰的类
会递归寻找@import注解引入的类,然后加入到有则加入beanDefinitions,
springboot就是原理在这个过程中通过解析spring.factories文件获取所有引入的class
4、解析被@bean注解修饰的类
3.ServletWebServerFactoryAutoConfiguration 默认tomcat作为springboot容器
AbstractApplicationContext#onRefresh()会调用ServletWebServerApplicationContext创建tomcat
AbstractApplicationContext#finishRefresh()完成启动
4.AutowiredAnnotationBeanPostProcessor:处理被@Autowired注解修饰的bean并注入
5.RequiredAnnotationBeanPostProcessor:处理被@Required注解修饰的方法
6.CommonAnnotationBeanPostProcessor:处理@PreDestroy、@PostConstruct、@Resource等多个注解的作用
spring重点后置处理器的更多相关文章
- spring利用后置处理器初始化bean属性
spring利用后置处理器初始化bean属性 参考:http://blog.csdn.net/heyutao007/article/details/50326793 @Configurable @En ...
- Spring的后置处理器BeanPostProcessor
一.BeanPostProcessor接口的作用 如果我们需要在Spring容器完成Bean的实例化.配置和其他的初始化前后添加一些自己的逻辑处理,我们就可以定义一个或者多个BeanPostProce ...
- Spring Bean后置处理器
本例子源于:W3CSchool,在此作记录 Bean 后置处理器允许在调用初始化方法前后对 Bean 进行额外的处理. BeanPostProcessor 接口定义回调方法,你可以实现该方法来提供自己 ...
- 曹工杂谈:为什么很少需要改Spring源码,因为扩展点太多了,说说Spring的后置处理器
前言 最近发了好几篇,都是覆盖框架源码,但是spring的代码,我是从没覆盖过,毕竟,如果方便扩展,没谁想去改源码,而spring就是不需要改源码的那个,真的是"对扩展开放,对修改关闭&qu ...
- spring的后置处理器——BeanPostProcessor以及spring的生命周期
后置处理器的调用时机 BeanPostProcessor是spring提供的接口,它有两个方法——postProcessBeforeInitialization.postProcessAfterIni ...
- Spring Bean 后置处理器
Bean 后置处理器允许在调用初始化方法前后对 Bean 进行额外的处理. BeanPostProcessor 接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等. 你也可以在 ...
- Spring的后置处理器BeanFactoryPostProcessor
新建一个JavaBean UserBeanFactoryPostProcessor 实现了BeanFactoryPostProcessor接口 Spring配置文件如下: 编写测试用例 从结果可以看出 ...
- Spring点滴五:Spring中的后置处理器BeanPostProcessor讲解
BeanPostProcessor接口作用: 如果我们想在Spring容器中完成bean实例化.配置以及其他初始化方法前后要添加一些自己逻辑处理.我们需要定义一个或多个BeanPostProcesso ...
- spring学习四:Spring中的后置处理器BeanPostProcessor
BeanPostProcessor接口作用: 如果我们想在Spring容器中完成bean实例化.配置以及其他初始化方法前后要添加一些自己逻辑处理.我们需要定义一个或多个BeanPostProcesso ...
- Spring-Spring Bean后置处理器
Spring Bean后置处理器 BeanPostProcessor接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等.你也可以在Spring容器通过插入一个或多个BeanPos ...
随机推荐
- RC4加密技术探究:优缺点与实战应用
引言 在网络安全领域,加密技术一直是保障数据安全的重要手段.Rivest Cipher 4(简称RC4)作为一种对称加密算法,自20世纪80年代以来广泛应用于各种网络安全协议中.本文将详细分析RC4加 ...
- 手撕Vue-实现计算属性
前言 经过上一篇的学习, 完成了将数据代理到了 Nue 的实例上方,这个我们已经撕完了.接下来要实现的是计算属性,计算属性的实现原理是通过 Object.defineProperty() 来实现的,我 ...
- 离线生成双语字幕,一键生成中英双语字幕,基于AI大模型,ModelScope
制作双语字幕的方案网上有很多,林林总总,不一而足.制作双语字幕的原理也极其简单,无非就是人声背景音分离.语音转文字.文字翻译,最后就是字幕文件的合并,但美中不足之处这些环节中需要接口api的参与,比如 ...
- C/C++ 简易异或加密的分析
异或,加解密shellcode代码的简单分析方法. #include <stdio.h> #include <Windows.h> unsigned char buf[] = ...
- PE格式:新建节并插入DLL
首先老样子,我们先来到PE节表位置处,并仿写一个.hack的节,该节大小为0x1000字节,在仿写前我们需要先来计算出.hack的虚拟偏移与实际偏移,先来查询一下当前节表结构,如下: 接着我们通过公式 ...
- Eclipse引用第三方jar包中中文注释为乱码问题
1.修改Eclipse中文本文件的默认编码:windows->Preferences->general->Workspace->Textfile encoding设置为UTF- ...
- 如何计算DG环境下Redo传输所需的带宽?
MOS有篇文章: How To Calculate The Required Network Bandwidth Transfer Of Redo In Data Guard Environments ...
- 案例:推进GTID解决MySQL主主不同步问题
之前文章介绍过MySQL修改lower_case_table_names参数,如果之前大写存储的表将无法识别,需要特殊处理. 最近遇到一例应用开发人员在修改这个参数之后,为了清除之前大写存储的表,做了 ...
- SQLWorkbench使用自定义JDBC驱动连接数据库
一.Windows上使用SQLWorkbench 1. 添加CloudDB的驱动,点击"Manage Driver". Name : Fandatsys-CDB sample U ...
- 静态RMQ处理方式合辑
这里汇集了所有我知道的静态区间最大值做法. \(O(n)\) 预处理,\(O(n)\) 回答. 每一次询问暴力处理即可. \(O(n^2)\) 预处理,\(O(1)\) 回答. 预处理出所有的答案. ...