背景:

SpringIOC容器它会以某种方式,加载配置文件中的 信息,将其解析为一个个的BeanDefinition.之后将BeanDefinition注册到容器之中。Spring IOC容器在实现的时候经过的过程可以使用如下图片表示:

分为两个主要部分:
其一 :容器启动阶段
其二:bean实例化阶段。

在容器的启动阶段主要做的是一些信息收集的过程(主要依赖于工具类BeanDefinitionReader),将收集的信息组成BeanDefinition.将BeanDefinition注册到相应的BeaneanRegistry。
Bean实例化的过程在请求方通过容器的getBean方法明确请求某个对象时候触发/隐式依赖关系调用时候也会触发该动作。此阶段做的操作主要是判断当前的请求对象是否已经被实例化过了。根据情况进行注入,当该对象实现某些回调接口,也会根据回调函数接口装配它。

引用自:https://www.jianshu.com/p/f16249ed5bcf

思考:

①、什么是前置处理器?

BeanFactoryPostProcess

前置:实例化对象之前

这个机制允许我们在实例化相应对象之前对注册到容器中的BeanDefinition的存储信息进行修改。可以根据这个机制对Bean增加其它信息。修改Bean定义的某些属性值。

想自定义前置处理器需要实现BeanFactoryPostProcess接口。当一个容器存在多种前置处理的时候,可以让前置处理器的实现类同时继承Ordered接口。
Spring容器提供了数种现成的前置处理器,常见的如:

  • PropertyPlaceholderConfigurer:允许在xml文件中使用占位符。将占位符代表的资源单独配置到简单的Properties文件中加载
  • PropertyOverrideConfigurer:不同于PropertyPlaceholderConfigurer的是,该类用于处理容器中的默认值覆为新值的场景
  • CustomEditorConfigurer:此前的两个前置处理器处理的均是BeanDefinition.通过把BeanDefinition的数据修改达到目的。CustomEditorConfigurer没有对BeanDefinition做任何变动。负责的是将后期会用到的信息注册到容器之中。例如将类型转换器注册到BeanDefinition中。供BeanDefinition将获取到的String类型参数转换为需要的类型。

②、什么是后置处理器?

BeanPostProcessor

后置:实例化对象之后

实例后的对象,初始化之前BeanBeforePostProcessor

实例后的对象,初始化之后BeanAfterPostProcessor

③、实例化和初始化的区别?

1、实例化----实例化的过程是一个创建Bean的过程,即调用Bean的构造函数,单例的Bean放入单例池中。

2、初始化----初始化的过程是一个赋值的过程,即调用Bean的setter,设置Bean的属性。

spring中的前置处理器和后置处理器区别相关推荐

  1. java前置处理器概念_Jmeter前置处理器和后置处理器的使用

    一.JMETER基本概念 1. 测试计划:顶级菜单,代表一个测试计划: 2. 线程组:代表一个要测试的场景(各种相关的交易集合),对于性能测试来说可以指定多少个用户完成这个场景的内容,对于自动化测试来 ...

  2. Spring AOP中的前置通知和后置通知详解

    不同版本的spring对AOP的支持有所不同,spring2.0之前,它主要针对不同类型的拦截器使用XML配置文件通过代理来实现.而spring2.0之后,它可以使用JDK5的注解来完成AOP的实现, ...

  3. spring源码:九大后置处理器

    目的: spring在完成一个bean的初始化.实例化的过程中,会用到九个后置处理器:本文梳理出这九个后置处理器 九大后置处理器 spring在初始化的过程中,会在九个地方分别调用了五个后置处理的九个 ...

  4. 通过Spring的BeanPostProcessor的 bean的后置处理器会拦截所有bean创建过程

    postProcessBeforeInitialization 在init方法之前调用 postProcessAfterInitialization 在init方法之后调用 package com.C ...

  5. Jmeter前置处理器和后置处理器的使用

    JSON Extractor 如下发送请求后,此请求返回了一个json对象 点击下拉框选择json path tester,响应数据被格式化 如果要拿对象中的token就可以在下方输入token,并点 ...

  6. 在微信小程序中 调用前置摄像头拍照 后置摄像头拍照扫码

    1.需求:点击扫码按钮,扫描二维码识别单号    实现:  <view class="getcode" bindtap="scanCode"> &l ...

  7. Spring3.0中的前置通知、后置通知、环绕通知、异常通知

    观众类Audience~~ [java] view plain copy package com.jCuckoo.demo; import org.aspectj.lang.ProceedingJoi ...

  8. Spring学习理解---后置处理器

    Spring学习理解之-后置处理器 spring后置处理器有几种?后置处理器的作用 后置处理器有两种: (1)bean的后置处理器:这种处理器会对容器中的bean进行后处理,对bean进行增强 (2) ...

  9. Spring源码篇一之beanFactory的真身和6大后置处理器的注册

    当你的才华还撑不起你的野心的时候,唯有静下心来学习. spring运行流程图(https://www.processon.com/view/5f3fcab8e0b34d07118258cb?fromn ...

最新文章

  1. 联发科首发台积电4nm,新旗舰多核跑分与苹果A15不相上下,网友:MTK也要Yes了?...
  2. .Net4.0并行库介绍——Cancellation Framework
  3. 用Qemu模拟vexpress-a9 (四) --- u-boot引导kernel,用nfs挂载根文件系统
  4. 遍历处理path及其子目录所有文件
  5. 场地测量的方法和程序_场地测量方案
  6. textview 背景变形_今日推荐:温州洞头-背景墙框石塑线条
  7. IOS--UILabel的使用方法详细
  8. 限时下载 | 132G编程资料:Python、JAVA、C,C++、机器人编程、PLC,入门到精通~
  9. 中兴力维动环监控_深圳中兴力维技术有限公司
  10. docker 安装 es + kibana + ik + 拼音
  11. Note Of Effective C++ 、More Effective C++ And Effective Modern C++
  12. 阿里云 OSS浏览器使用步骤
  13. MongoDB的授权和权限
  14. 自动白平衡(AWB)基础
  15. 点云配准NDT+ICP
  16. Leetcode|MySQL|数据库刷题记录(601~627)
  17. 高分系列卫星介绍(GF)
  18. PMP项目管理项目整合管理
  19. 开源代码-泡在网上的日子
  20. Inventor 二次开发 - Gear Up Inventor 分享 Inventor 二次开发 的资料和经验

热门文章

  1. HTML大期末作业: 关于城市旅游的HTML网页设计——北京(5页) HTML+CSS+JavaScript 旅游网页设计网页HTML...
  2. redis之紧凑的rdb文件
  3. 【信号】信号处理与进程通信:快速上手
  4. StrictMode带来的思考-StrictMode原理(5)
  5. sourceInsight4 破解方法
  6. 面试题: 谈一谈你对面向对象编程思想的理解?
  7. 信用等于更强大的安全防御能力 阿里云发起安全信誉联盟计划
  8. 【张六儿大话设计模式】——装饰器模式
  9. NYoj 动态规划 聪明的KK
  10. 使用Python实现伪防沉迷工具