Spring原理分析-初始化与销毁执行顺序

2022-04-13  本文已影响0人  石头耳东

一、初始化执行顺序

1、基础准备

public class Bean1 implements InitializingBean {
    private static final Logger log = LoggerFactory.getLogger(Bean1.class);
    @PostConstruct
    public void init1(){
        log.debug("初始化1 @PostConstruct");
    }
    @Override
    public void afterPropertiesSet() throws Exception {
        log.debug("初始化2 afterPropertiesSet");
    }
    public void init3(){
        log.debug("初始化3 @Bean(initMethod = \"\")");
    }
}
@SpringBootApplication
public class Demo07 {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(Demo07.class, args);
        context.close();
    }

    @Bean(initMethod = "init3")
    public Bean1 bean1(){return new Bean1();}
}
初始化执行顺序.png

2、总结

@PostConstruct → InitializingBean#afterPropertiesSet → @Bean(initMethod = "")

二、销毁执行顺序

1、基础准备

public class Bean2 implements DisposableBean {
    private static final Logger log = LoggerFactory.getLogger(Bean2.class);
    @PreDestroy
    public void destroy1(){
        log.debug("销毁方法1 @PreDestroy");
    }
    @Override
    public void destroy() throws Exception {
        log.debug("销毁方法2 destroy");
    }
    public void destroy3(){
        log.debug("销毁方法3 @Bean(\"\")");
    }
}

添加如下内容:

@Bean(destroyMethod = "destroy3")
public Bean2 bean2(){return new Bean2();}
销毁执行顺序.png

2、总结

@PreDestroy → DisposableBean#destroy → @Bean(destroyMethod = "")

三、结尾

以上即为初始化与销毁执行顺序的全部内容,感谢阅读。

上一篇 下一篇

猜你喜欢

热点阅读