Spring

Spring管理Bean的生命周期

2020-03-18  本文已影响0人  BlueSkyBlue

Spring IOC容器可以管理bean的生命周期。Spring允许在Bean生命周期的特定点执行定制任务。

Spring IOC容器对Bean的生命周期进行管理的过程:

在bean的声明里设置init-method和destroy-method属性,为bean指定初始化和销毁方法。

示例:
Bean类

public class Car {
    public Car(){
        System.out.println("Car's constructor");
    }

    private String brand;

    public void setBrand(String brand) {
        System.out.println("Set brand.");
        this.brand = brand;
    }

    public void init(){
        System.out.println("init");
    }

    public void destroy(){
        System.out.println("destroy");
    }

    @Override
    public String toString() {
        return "Car{" +
                "brand='" + brand + '\'' +
                '}';
    }
}

配置文件:

<bean id="car" class="com.spring.cycle.Car"
        init-method="init" destroy-method="destroy">
    <property name="brand" value="Audi"></property>
</bean>

创建bean的后置处理器

bean后置处理器允许在调用初始化方法前后对bean进行额外的处理。

bean后置处理器对IOC容器里的所有bean实例逐一进行处理,而非单一实例。典型的应用是检查bean属性的正确性或根据特定的标准更改bean的属性。

对bean后置处理器而言,需要实现interface BeanPostProcessor接口。在初始化方法被调用前后,Spring将把每个bean实例分别传递给上述接口的以下两个方法:

@Override
//在init方法之前进行调用
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    return null;
}

@Override
//在init方法之后进行调用
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    return null;
}

参数说明:
bean:bean容器本身。
beanName:IOC容器中配置的bean的name。
返回值是实际上返回给用户的bean。可以在以上两个方法中修改返回的bean,甚至返回一个新的bean。

不需要配置id,IOC容器会自动识别一个BeanPostProcessor。

添加Bean后置处理器后的Bean的生命周期

上一篇下一篇

猜你喜欢

热点阅读