当前位置:   article > 正文

[spring学习]5、bean的后置处理器(BeanPostProcessor)_bean后置处理器

bean后置处理器

目录

前言

基本说明

BeanPostProcessor的基本使用

实例应用

总结


前言

        在这篇文章中,将会介绍bean的后置处理器,由于这个涉及到AOP的思想,这里不进行过多的深入,也就是不讲原理(后面文章会手写源码),这里只介绍后置处理器如何使用。


基本说明

        在spring中,后置处理器会在bean初始化化之前和初始化之后进行调用,做相应的处理,我们可以在后置处理器中对bean进行统一的管理和操作


BeanPostProcessor的基本使用

        我们要使用后置处理器,首先需要实现BeanPoatProcessor这个接口,下面我们创建一个类来实现这个接口。  

        在IDEA中,按ctrl+i,重写2个方法

        postProcessBeforeInitialization和 postProcessAfterInitialization这2个方法,一个是在bean的初始化方法之前调用,一个是在bean初始化方法之后调用,它们的参数都是一样的,下面进行介绍

参数介绍

  • 第一个参数 Object:表示我们配置的bean对象
  • 第二个参数 String:就是我们配置bean时指定的名称
  • 返回值 Object:这个就是我们对bean处理后要进行返回的bean,返回后,spring容器的中的bean就是我们这里返回的bean

使用 

        创建好之后要进行配置才能生效,这个很简单,只需要将我们创建的后置处理器加入到spring容器即可,就像正常的bean那样配置就行

注意事项

        后置处理器会对所有的bean都生效,使用时需要注意,也就是所有bean创建前和创建后都会调用我们配置的后置处理器的对应方法


实例应用

        我们创建一个People类,该类有一个gender属性,一个describe属性,要求就是当我们创建时bean时,如果gender是男,describe就是这是一个男生,否则describe就是这是一个女生。

        首先创建People类

  1. public class People {
  2. private String gender;
  3. private String describe;
  4. public String getGender() {
  5. return gender;
  6. }
  7. public void setGender(String gender) {
  8. this.gender = gender;
  9. }
  10. public String getDescribe() {
  11. return describe;
  12. }
  13. public void setDescribe(String describe) {
  14. this.describe = describe;
  15. }
  16. @Override
  17. public String toString() {
  18. return "People{" +
  19. "gender='" + gender + '\'' +
  20. ", describe='" + describe + '\'' +
  21. '}';
  22. }
  23. }

        然后在xml中配置2个People,一个性别男,一个性别女

  1. <bean class="com.ttpfx.spring.practice.People" id="people01">
  2. <property name="gender" value="男"/>
  3. </bean>
  4. <bean class="com.ttpfx.spring.practice.People" id="people02">
  5. <property name="gender" value="女"/>
  6. </bean>

         下一步就是创建我们的后置处理器

  1. public class MyBeanPostProcessor implements BeanPostProcessor {
  2. @Override
  3. public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
  4. //在bean创建好之后修改bean的内容
  5. //首先判断bean是不是一个People
  6. if (bean.getClass() == People.class) {
  7. //判断是不是男性
  8. if ("男".equals(((People) bean).getGender())) {
  9. //进行属性的设置
  10. ((People) bean).setDescribe("这时一个男生");
  11. }else {
  12. ((People) bean).setDescribe("这时一个女生");
  13. }
  14. }
  15. return bean;
  16. }
  17. }

         将我们创建的后置处理器配置到xml文件中

    <bean class="com.ttpfx.spring.practice.MyBeanPostProcessor" id="beanPostProcessor"/>

         创建测试方法进行测试

  1. @Test
  2. public void t2(){
  3. //创建spring容器
  4. ApplicationContext ioc = new ClassPathXmlApplicationContext("beans02.xml");
  5. //获取xml中配置的2个people
  6. People people01 = ioc.getBean("people01", People.class);
  7. People people02 = ioc.getBean("people02", People.class);
  8. //输出信息
  9. System.out.println(people01);
  10. System.out.println(people02);
  11. }

         控制台输出


总结

        后置处理器的使用并不难,甚至可以说是十分简单,但是要了解原理的话现在还有点早,这个得要AOP学了再说,后面的文章也会自己手写一个简单的spring,里面会将ioc以及aop的基础功能都进行实现

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/799253
推荐阅读
相关标签
  

闽ICP备14008679号