ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第十三章 后置处理Bean

2022-07-21 02:00:07  阅读:192  来源: 互联网

标签:Category BeanPostProcessor beanName 后置 Spring Object bean Bean 第十三章


BeanPostProcessor: 对Spring工厂所创建的对象,进行再加工
注意: BeanPostProcessor是一个接口

image

  • 后置处理Bean的原理

    image

    程序员实现BeanPostProcessor接口,重写规定的方法:
    
    Object postProcessBeforeInitialization(Object bean,String beanName)
    作用: Spring创建完对象,并进行注入后,可以运行Before方法进行加工
    通过方法参数获得Spring创建好的对象
    通过返回值将加工好的对象交给Spring
    
    Object postProcessAfterInitialization(Object bean,String beanName)
    作用: Spring执行完对象的初始化操作后,可以运行After方法进行加工
    通过方法参数获得Spring创建好的对象
    通过返回值将加工好的对象交给Spring
    
    实战中:
    很少处理Spring的初始化操作,这种情况下,没必要区分Before After.只需实现After即可
    
    注意:
    Before方法可以什么都不用写,但必须将bean返回
    
  • BeanPostProcessor的开发步骤

    • 用一个类实现BeanPostProcessor接口

      public class MyBeanPostProcessor implements BeanPostProcessor {
          @Override
          public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
              return bean;
          }
      
          @Override
          public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
              /*
              if (bean instanceof Category category) {
                   category.setName("SWJ");
               }
              */
              if(bean instanceof Category){
                  Category category = (Category) bean;
                  category.setName("SWJ");
              }        
              return bean;
          }
      }
      
    • 在Spring配置文中进行配置

      <bean id="myBeanPostProcessor" class="com.dong.beanpost.MyBeanPostProcessor"/>
      
    • 细节

      BeanPostProcessor会对Spring工厂中所有创建的对象进行加工
      

标签:Category,BeanPostProcessor,beanName,后置,Spring,Object,bean,Bean,第十三章
来源: https://www.cnblogs.com/suwuji/p/16500506.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有