spring后置处理器BeanPostProcessor和bean生命周期

1.后置处理器BeanPostProcessor可以使bean在被创建之前和之后先运行一段代码
首先,实现一个继承了BeanPostProcessor的类,类中实现了postProcessBeforeInitialization和postProcessAfterInitialization两个方法

/*
    1、编写后置处理器的实现类
    2、将后置处理器注册到配置文件中
 */
public class MyBeanPostProcesser implements BeanPostProcessor {
    
    


    /*
    postProcessBeforeInitialization
    初始化之前调用
    Object bean:是将要初始化的bean
    String beanName:在xml中配置的id
     */

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    
    
        System.out.println(beanName+"要初始化le ");
        return bean;
    }
    /*
        postProcessAfterInitialization
        初始化之后调用
        Object bean:是将要初始化的bean
        String beanName:在xml中配置的id
    */
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    
    
        System.out.println(beanName+"初始化完了");
        return bean;
    }
}

然后在容器中为后置处理器进行配置,这样该容器中所有对象创建时都会调用后置处理器的两个方法。

<bean class="com.lzt.bean.MyBeanPostProcesser" id="beanPostProcesser"></bean>

2、bean生命周期
创建带有生命周期方法的bean
生命周期:bean的创建到销毁
ioc容器中注册的bean:
1)单实例bean:在容器启动的时候就会创建好,容器关闭也会销毁
2)多实例bean:获取的时候创建,
我们可以为bean自定义一些生命周期方法,spring在创建和销毁的时候就会调用这些指定的方法
自定义初始化方法和销毁方法:方法不能有参数

<bean class="com.lzt.bean.Book" name="book01" init-method="myInit"
    destroy-method="myDestory"></bean>

单例bean生命周期
构造器->初始化方法->(容器销毁)销毁方法
多实例:容器关闭不会销毁
获取bean(构造器->初始化方法)->容器销毁不调用销毁方法
有了后置处理器之后:
构造器->后置处理器before->初始化方法->后置处理器after->(容器销毁)销毁方法
不论bean是否有初始化方法,后置处理器都会工作

猜你喜欢

转载自blog.csdn.net/weixin_38857307/article/details/109583644