Spring-后置处理Bean(工厂创建对象过程中的对象再加工)

后置处理Bean

BeanPostProcessor作用:对从Spring工厂中创建的对象,进行再加工。(AOP的底层实现)

实现方法

实现Spring中BeanPostProcessor接口中规定的两个方法:

postProcessorBeforeInitialization(Object bean,String beanName)

postProcessorAfterInitialization(Object bean,String beanName)

  • Step 1:实现接口类
public class MyBeanPostProcessor implements BeanPostProcessor {
    @Override//两个方法都需要实现,但是我们只需要更改其中一个就好。因为此接口中的方法修饰符为*dafult*
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if(bean instanceof Person){
            Person person = (Person)bean;
            person.setName("eason");
        }
        return bean;
    }
}
  • Step 2:配置文件中配置
<bean id="myBeanPostProcessor" class="com.yusael.beanpost.MyBeanPostProcessor"/>
//名字随意取

细节注意:BeanPostProcessor会对Spring工厂创建的所有对象进行加工,如果创建个多个不同的对象,需要注意传入对象的判断。bean instanceof Person来判断吧。

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    if (bean instanceof  Category) {
        Category category = (Category) bean;
        category.setName("yusael");
        return category;
    }
    return bean;
}

你可能感兴趣的:(spring,java,hibernate)