Bean 的初始化方法和销毁方法

2021-04-01  本文已影响0人  尘埃里的玄

1: 什么是 bean 的生命周期

bean 的创建----->初始化----->销毁方法 由容器管理 Bean 的生命周期,我们可以通过自己指定 bean 的初始化方法和 bean 的销毁方法

@Configuration public class MainConfig { 
//指定了 bean 的生命周期的初始化方法和销毁方法. 
@Bean(initMethod = "init",destroyMethod = "destroy") 
public Car car() { 
        return new Car(); 
}
 }

2: 通过 InitializingBean 和 DisposableBean 的二个接口实现

@Component
public class Person implements InitializingBean, DisposableBean {
    public Person() {
        System.out.println("Person 的构造方法");
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("DisposableBean 的 destroy()方法 ");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("InitializingBean 的 afterPropertiesSet 方法");
    }
}

3: 通过 JSR250 规范提供的注解@PostConstruct 和@ProDestory 标 注的方法

@Component
public class Book {
    public Book() {
        System.out.println("book 的构造方法");
    }

    @PostConstruct
    public void init() {
        System.out.println("book 的 PostConstruct 标志的方法");
    }

    @PreDestroy
    public void destory() {
        System.out.println("book 的 PreDestory 标注的方法");
    }
}

4: 通过 Spring 的 BeanPostProcessor 的 bean 的后置处理器会拦截 所有 bean 创建过程

public class TestBeanPostProcessor implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("TestBeanPostProcessor...postProcessBeforeInitialization:" + beanName);
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("TestBeanPostProcessor...postProcessAfterInitialization:" + beanName);
        return bean;
    }
}

BeanPostProcessor 的执行时机


image.png
上一篇 下一篇

猜你喜欢

热点阅读