第十三章 后置处理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工厂中所有创建的对象进行加工
      

作者:苏无及

出处:https://www.cnblogs.com/suwuji/p/16500506.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   苏无及  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示