• 作者:PigBrither666
  • 分类: java

Spring 后置处理器【1】 简单介绍

一句话:bean 在初始化前或初始化后的瞬间,我自己添加一些业务逻辑

bean 后置处理器类的内容

简单代码
package com.hspedu.spring.bean;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
 * @Author:PigBrother
 * @Date:2022/9/22
 * @Description:ToDo
 */

public class MyBeanPostProcessor implements BeanPostProcessor {
    /**
     * Before : 说明在bean 初始化前被调用
     * @param bean 在ioc 容器中, 我配置的bean 对象
     * @param beanName 在ioc 容器中,bean 的 id
     * @return bean 返回处理后的bean 对象
     * @throws BeansException
     */
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        // 写业务逻辑:在bean 初始化前,修改其一些属性
        System.out.println("postProcessBeforeInitialization() 方法被调用");
        System.out.println("bean = " + bean);
        System.out.println("beanName = " + beanName);
        return bean;
    }

    /**
     * after : 说明在bean 初始化后被调用
     * @param bean 在ioc 容器中, 我配置的bean 对象
     * @param beanName 在ioc 容器中,bean 的 id
     * @return bean 返回处理后的bean 对象
     * @throws BeansException
     */
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        // 写业务逻辑:在bean 初始化前,修改其一些属性
        System.out.println("postProcessAfterInitialization() 方法被调用");
        System.out.println("bean = " + bean);
        System.out.println("beanName = " + beanName);
        return bean;
    }
}

代码解读

  • 实现 BeanPostProcessor 接口
  • postProcessBeforeInitialization 和 postProcessAfterInitialization 两个方法
  • 在两个方法中写业务逻辑

容器配置文件(即xml 文件)

测试代码

测试代码
  @Test
    public void beanProcessorTest() {
       ApplicationContext ioc = new ClassPathXmlApplicationContext("beans02.xml");
        House            house = ioc.getBean("house", House.class);
        System.out.println(house);

        // 关闭ioc 容器
        ((ClassPathXmlApplicationContext)ioc).close();

    }

测试结果

转载自: https://www.cnblogs.com/PigBrotherLove/p/16718015.html