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 ...
随机推荐
- 【Java】ArrayList线程不安全的坑
问题复现: 使用Java的steam().paralleStream(),foreach()方法向ArrayList添加数据,导致ArrayList中出现空值,代码如下: public static ...
- 英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑
英伟达系列显卡大解析B100.H200.L40S.A100.A800.H100.H800.V100如何选择,含架构技术和性能对比带你解决疑惑 近期,AIGC领域呈现出一片繁荣景象,其背后离不开强大算力 ...
- 《IDEA Plugin 开发手册》• 小傅哥.pdf | 年前整理的最后一本PDF资料
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么?写写快乐的热门文章不好吗! 从开始准备成体系的编写 IDEA Plugin ...
- Object.getOwnPropertyDescriptor()属性
console.log(Object.getOwnPropertyDescriptor(person,'a')); // writable: 是否可以修改 // value: 对象值 // confi ...
- automapper 10 +autofac+asp.net web api
automapper 不必多说 https://automapper.org autofac 这里也不多说 https://autofac.org 这里主要 说 automapper 10.0 版本+ ...
- Win10已死!微软发布Windows 11大更新:引入ChatGPT、升级巨大
今天凌晨微软在开发者大会上公布了Windows 11的新版本更新"Moment 3",整体升级幅度非常的大. 新系统的多任务有了改进,现在按下Alt+Tab时,可以显示更多的Edg ...
- KB0001.修改DoraCloud管理系统的IP地址
KB0001.修改DoraCloud管理系统的IP地址 DoraCloud 管理系统是一个CentOS Linux的虚拟机.我们既可以通过DoraCloud后台管理系统修改它的IP地址,也可以通过Ce ...
- ElasticSearch7.3学习(十八)----多索引搜索
1.multi-index 多索引搜索 多索引搜索就是一次性搜索多个index下的数据 /_search:所有索引下的所有数据都搜索出来 /index1/_search:指定一个index,搜索其下所 ...
- java bean 慎用 is开头isXxx开头的属性,若必须得用,那么一定要记得 idea自动生成的 setter 和 getter会不标准,从而会引起问题,他自动生成后,需要手工再次进行修改,才可使用,要不然有可能引起各种问题
直接上例子: 然后用 Idea 自动生成 getter 和 setter public class XyzBean { //最普通的 private String name; //Boolean类型, ...
- Kafka-生产者、broker、消费者的调优参数总结
生产环境下,为了尽可能提升Kafka的整体吞吐量,可以对Kafka的相关配置参数进行调整,以达到提升整体性能的目的. 本文主要从Kafka的不同组件出发,讲解各组件涉及的配置参数和参数含义. 一.生产 ...