spring中的前置处理器和后置处理器区别
背景:
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中的前置处理器和后置处理器区别相关推荐
- java前置处理器概念_Jmeter前置处理器和后置处理器的使用
一.JMETER基本概念 1. 测试计划:顶级菜单,代表一个测试计划: 2. 线程组:代表一个要测试的场景(各种相关的交易集合),对于性能测试来说可以指定多少个用户完成这个场景的内容,对于自动化测试来 ...
- Spring AOP中的前置通知和后置通知详解
不同版本的spring对AOP的支持有所不同,spring2.0之前,它主要针对不同类型的拦截器使用XML配置文件通过代理来实现.而spring2.0之后,它可以使用JDK5的注解来完成AOP的实现, ...
- spring源码:九大后置处理器
目的: spring在完成一个bean的初始化.实例化的过程中,会用到九个后置处理器:本文梳理出这九个后置处理器 九大后置处理器 spring在初始化的过程中,会在九个地方分别调用了五个后置处理的九个 ...
- 通过Spring的BeanPostProcessor的 bean的后置处理器会拦截所有bean创建过程
postProcessBeforeInitialization 在init方法之前调用 postProcessAfterInitialization 在init方法之后调用 package com.C ...
- Jmeter前置处理器和后置处理器的使用
JSON Extractor 如下发送请求后,此请求返回了一个json对象 点击下拉框选择json path tester,响应数据被格式化 如果要拿对象中的token就可以在下方输入token,并点 ...
- 在微信小程序中 调用前置摄像头拍照 后置摄像头拍照扫码
1.需求:点击扫码按钮,扫描二维码识别单号 实现: <view class="getcode" bindtap="scanCode"> &l ...
- Spring3.0中的前置通知、后置通知、环绕通知、异常通知
观众类Audience~~ [java] view plain copy package com.jCuckoo.demo; import org.aspectj.lang.ProceedingJoi ...
- Spring学习理解---后置处理器
Spring学习理解之-后置处理器 spring后置处理器有几种?后置处理器的作用 后置处理器有两种: (1)bean的后置处理器:这种处理器会对容器中的bean进行后处理,对bean进行增强 (2) ...
- Spring源码篇一之beanFactory的真身和6大后置处理器的注册
当你的才华还撑不起你的野心的时候,唯有静下心来学习. spring运行流程图(https://www.processon.com/view/5f3fcab8e0b34d07118258cb?fromn ...
最新文章
- 联发科首发台积电4nm,新旗舰多核跑分与苹果A15不相上下,网友:MTK也要Yes了?...
- .Net4.0并行库介绍——Cancellation Framework
- 用Qemu模拟vexpress-a9 (四) --- u-boot引导kernel,用nfs挂载根文件系统
- 遍历处理path及其子目录所有文件
- 场地测量的方法和程序_场地测量方案
- textview 背景变形_今日推荐:温州洞头-背景墙框石塑线条
- IOS--UILabel的使用方法详细
- 限时下载 | 132G编程资料:Python、JAVA、C,C++、机器人编程、PLC,入门到精通~
- 中兴力维动环监控_深圳中兴力维技术有限公司
- docker 安装 es + kibana + ik + 拼音
- Note Of Effective C++ 、More Effective C++ And Effective Modern C++
- 阿里云 OSS浏览器使用步骤
- MongoDB的授权和权限
- 自动白平衡(AWB)基础
- 点云配准NDT+ICP
- Leetcode|MySQL|数据库刷题记录(601~627)
- 高分系列卫星介绍(GF)
- PMP项目管理项目整合管理
- 开源代码-泡在网上的日子
- Inventor 二次开发 - Gear Up Inventor 分享 Inventor 二次开发 的资料和经验
热门文章
- HTML大期末作业: 关于城市旅游的HTML网页设计——北京(5页) HTML+CSS+JavaScript 旅游网页设计网页HTML...
- redis之紧凑的rdb文件
- 【信号】信号处理与进程通信:快速上手
- StrictMode带来的思考-StrictMode原理(5)
- sourceInsight4 破解方法
- 面试题: 谈一谈你对面向对象编程思想的理解?
- 信用等于更强大的安全防御能力 阿里云发起安全信誉联盟计划
- 【张六儿大话设计模式】——装饰器模式
- NYoj 动态规划 聪明的KK
- 使用Python实现伪防沉迷工具