o2o与网站建设,合肥市住房和城乡建设厅官网,射洪做网站,ip安装wordpress目录
编辑一、后置处理 Bean
1、后置处理 Bean 的运行原理分析
2、BeanPostProcessor 的开发步骤
#xff08;1#xff09;实现 BeanPostProcessor 接口
#xff08;2#xff09;Spring 的配置文件配置
#xff08;3#xff09;细节 一、后置处理 Bean
BeanPost…
目录
编辑一、后置处理 Bean
1、后置处理 Bean 的运行原理分析
2、BeanPostProcessor 的开发步骤
1实现 BeanPostProcessor 接口
2Spring 的配置文件配置
3细节 一、后置处理 Bean
BeanPostProcessor 作用对 Spring 工厂所创建的对象进行再加工。 1、后置处理 Bean 的运行原理分析
BeanPostProcessor 实际上是一个接口我们只需要把对这个对象进行加工的内容写在 BeanPostProcessor 接口规定的方法里即可 BeanPostProcessor 这个接口规定了两个方法来让我们实现
postProcessBeforeInitialization
作用 Spring 创建完对象并进行注入后可以运行 Before 方法进行加工
获得 Spring 创建好的对象通过方法的参数
最终通过返回值交给 Spring 框架
postProcessAfterInitialization
作用在 Spring 执行完对象的初始化操作后可以运行 After 方法进行价格
获得 Spring 创建好的对象通过方法的参数
最终通过返回值交给 Spring 框架
实战中很少处理 Spring 初始化操作没有必要区分 Before After 只需要实现其中一个 After 方法即可
注意虽然可以只实现一个 After 但是 Before 也要写只不过是一个空实现直接返回得到的 bean 对象 2、BeanPostProcessor 的开发步骤
1实现 BeanPostProcessor 接口 我们发现此时并没有发生提示这是为什么呢我们来看看源码 我们会发现在这些方法前面有一个 default这是 jdk8.0 的新特性叫做接口的默认实现
此时就不强制实现类必须实现它
但是此时我们必须要实现这两个方法才能完成加工的作用所以我们在这里还是得自己实现这两个方法
public class MyBeanPostProcessor implements BeanPostProcessor {Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {return bean;}Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {Categroy categroy (Categroy) bean;categroy.setName(xiaoming);return categroy;}
}
2Spring 的配置文件配置
bean idmyBeanPostProcessor classbeanpost.MyBeanPostProcessor/bean 3细节
BeanpostProcessor 会对 Spring 工厂中所有创建的对象进行加工
所以为了解决这个问题我们可以对这段代码进行修改; Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {if (bean instanceof Categroy){Categroy categroy (Categroy) bean;categroy.setName(xiaoming);}return bean;}