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重点后置处理器的更多相关文章

  1. spring利用后置处理器初始化bean属性

    spring利用后置处理器初始化bean属性 参考:http://blog.csdn.net/heyutao007/article/details/50326793 @Configurable @En ...

  2. Spring的后置处理器BeanPostProcessor

    一.BeanPostProcessor接口的作用 如果我们需要在Spring容器完成Bean的实例化.配置和其他的初始化前后添加一些自己的逻辑处理,我们就可以定义一个或者多个BeanPostProce ...

  3. Spring Bean后置处理器

    本例子源于:W3CSchool,在此作记录 Bean 后置处理器允许在调用初始化方法前后对 Bean 进行额外的处理. BeanPostProcessor 接口定义回调方法,你可以实现该方法来提供自己 ...

  4. 曹工杂谈:为什么很少需要改Spring源码,因为扩展点太多了,说说Spring的后置处理器

    前言 最近发了好几篇,都是覆盖框架源码,但是spring的代码,我是从没覆盖过,毕竟,如果方便扩展,没谁想去改源码,而spring就是不需要改源码的那个,真的是"对扩展开放,对修改关闭&qu ...

  5. spring的后置处理器——BeanPostProcessor以及spring的生命周期

    后置处理器的调用时机 BeanPostProcessor是spring提供的接口,它有两个方法——postProcessBeforeInitialization.postProcessAfterIni ...

  6. Spring Bean 后置处理器

    Bean 后置处理器允许在调用初始化方法前后对 Bean 进行额外的处理. BeanPostProcessor 接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等. 你也可以在 ...

  7. Spring的后置处理器BeanFactoryPostProcessor

    新建一个JavaBean UserBeanFactoryPostProcessor 实现了BeanFactoryPostProcessor接口 Spring配置文件如下: 编写测试用例 从结果可以看出 ...

  8. Spring点滴五:Spring中的后置处理器BeanPostProcessor讲解

    BeanPostProcessor接口作用: 如果我们想在Spring容器中完成bean实例化.配置以及其他初始化方法前后要添加一些自己逻辑处理.我们需要定义一个或多个BeanPostProcesso ...

  9. spring学习四:Spring中的后置处理器BeanPostProcessor

    BeanPostProcessor接口作用: 如果我们想在Spring容器中完成bean实例化.配置以及其他初始化方法前后要添加一些自己逻辑处理.我们需要定义一个或多个BeanPostProcesso ...

  10. Spring-Spring Bean后置处理器

    Spring Bean后置处理器 BeanPostProcessor接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等.你也可以在Spring容器通过插入一个或多个BeanPos ...

随机推荐

  1. RC4加密技术探究:优缺点与实战应用

    引言 在网络安全领域,加密技术一直是保障数据安全的重要手段.Rivest Cipher 4(简称RC4)作为一种对称加密算法,自20世纪80年代以来广泛应用于各种网络安全协议中.本文将详细分析RC4加 ...

  2. 手撕Vue-实现计算属性

    前言 经过上一篇的学习, 完成了将数据代理到了 Nue 的实例上方,这个我们已经撕完了.接下来要实现的是计算属性,计算属性的实现原理是通过 Object.defineProperty() 来实现的,我 ...

  3. 离线生成双语字幕,一键生成中英双语字幕,基于AI大模型,ModelScope

    制作双语字幕的方案网上有很多,林林总总,不一而足.制作双语字幕的原理也极其简单,无非就是人声背景音分离.语音转文字.文字翻译,最后就是字幕文件的合并,但美中不足之处这些环节中需要接口api的参与,比如 ...

  4. C/C++ 简易异或加密的分析

    异或,加解密shellcode代码的简单分析方法. #include <stdio.h> #include <Windows.h> unsigned char buf[] = ...

  5. PE格式:新建节并插入DLL

    首先老样子,我们先来到PE节表位置处,并仿写一个.hack的节,该节大小为0x1000字节,在仿写前我们需要先来计算出.hack的虚拟偏移与实际偏移,先来查询一下当前节表结构,如下: 接着我们通过公式 ...

  6. Eclipse引用第三方jar包中中文注释为乱码问题

    1.修改Eclipse中文本文件的默认编码:windows->Preferences->general->Workspace->Textfile encoding设置为UTF- ...

  7. 如何计算DG环境下Redo传输所需的带宽?

    MOS有篇文章: How To Calculate The Required Network Bandwidth Transfer Of Redo In Data Guard Environments ...

  8. 案例:推进GTID解决MySQL主主不同步问题

    之前文章介绍过MySQL修改lower_case_table_names参数,如果之前大写存储的表将无法识别,需要特殊处理. 最近遇到一例应用开发人员在修改这个参数之后,为了清除之前大写存储的表,做了 ...

  9. SQLWorkbench使用自定义JDBC驱动连接数据库

    一.Windows上使用SQLWorkbench 1. 添加CloudDB的驱动,点击"Manage Driver". Name :  Fandatsys-CDB sample U ...

  10. 静态RMQ处理方式合辑

    这里汇集了所有我知道的静态区间最大值做法. \(O(n)\) 预处理,\(O(n)\) 回答. 每一次询问暴力处理即可. \(O(n^2)\) 预处理,\(O(1)\) 回答. 预处理出所有的答案. ...