1. 程式人生 > 實用技巧 >Spring後置處理器BeanPostProcessor

Spring後置處理器BeanPostProcessor

Spring後置處理器BeanPostProcessor

Spring提供了許多擴充套件點,如FactoryBean、Aware,這裡還有BeanPostProcessor

在Spring的生命週期中,BeanPostProcessor在初始化前後處理bean。

Spring中的bean每個都會經過Bean後置處理器,其中兩個方法會一個一個接受bean的例項和beanName,判斷型別進行處理即可。
若想使用BeanPostProcessor對bean進行增強,實現該介面即可。
還可以實現Ordered介面處理不同順序的後置處理器。
@Component
public class BeanPost implements BeanPostProcessor {
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println(beanName);
        //通過型別處理
        if(bean instanceof User){
            //轉換型別,賦值
            ((User) bean).setAge(19);
        }
        return bean;
    }

    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println(bean);
        //通過名字處理
        if(beanName.equals("user")){
            ((User)bean).setSex("女");
        }
        return bean;
    }
}

User bean = ContextUtil.getBean(User.class);
bean.setName("jack");//測試中只增加了姓名
System.out.println(bean);


//後置處理器中輸出的內容
user
User(name=null, id=null, sex=null, age=19)

 //最後測試中輸出的內容
User(name=jack, id=null, sex=女, age=19)