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 ...
随机推荐
- PGO前瞻
原文在这里. 原文发布于2023年2月8日 在构建Go二进制文件时,Go编译器会进行优化,以尽可能生成性能最佳的二进制文件.例如,常量传播可以在编译时对常量表达式进行求值,避免了运行时的计算开销:逃逸 ...
- 【踩坑记录】SpringBoot跨域配置不生效
问题复现: 明明在拦截器里配置了跨域,就是不生效,使用PostMan等后端调试工具调试,均正常,Response中有Access-Control-Allow-Origin: *,这个Header,但是 ...
- 从零开始搭建医药领域知识图谱实现智能问答与分析服务(含码源):含Neo4j基于垂直网站数据的医药知识图谱构建、医药知识图谱的自动问答等
从零开始搭建医药领域知识图谱实现智能问答与分析服务(含码源):含Neo4j基于垂直网站数据的医药知识图谱构建.医药知识图谱的自动问答等 项目介绍 关于知识图谱概念性的介绍就不在此赘述.目前知识图谱在各 ...
- Windows 10 ISO原版镜像文件下载(2024年01月)
Windows 10 (business editions), version 22H2 (x64) - DVD (Chinese-Simplified) 链接:https://pan.baidu.c ...
- PHP实现字符串反转
方法一 用自带的函数strrev echo strrev('hello'); 方法二 自写循环方法 $str = 'hello'; $i = strlen($str); $newStr=''; whi ...
- OLED 驱动模块程序代码
1.前言 作为嵌入式软件开发,可能经常会使用单片机连接驱动显示屏,实现人机交互的功能,通常可选择的有 OLED 和 LCD 等,其中相关驱动代码例程网上更是数不胜数. 本文介绍的是 OLED, 常见代 ...
- Delphi Vista,Win7,Win8 的 Uac,管理员身份运行
要用就用下面我自己总结的官方的做法: 1.首先搜到delphi 自带的manifest,然后在其基础上改一个单词 2.将里面的asInvoker改为requireAdministrator 3.修改为 ...
- 从零开始手写缓存框架(二)redis expire 过期原理及实现
前言 我们在 从零手写 cache 框架(一)实现固定大小的缓存 中已经初步实现了我们的 cache. 本节,让我们来一起学习一下如何实现类似 redis 中的 expire 过期功能. 过期是一个非 ...
- tensorflow中交叉熵损失函数详解
1 前言 tensorflow中定义了3个交叉熵损失函数: softmax_cross_entropy_with_logits(logits, labels) softmax_cross_entrop ...
- Error parsing HTTP request header--400 bad request
问题描述: JSP中通过form post方式请求URL传入json格式参数报错: 信息: Error parsing HTTP request header Note: further occur ...