软件编程
位置:首页>> 软件编程>> java编程>> Spring初始化与销毁顺序案例演示详解

Spring初始化与销毁顺序案例演示详解

作者:tanglin_030907031026  发布时间:2021-06-08 14:33:10 

标签:Spring,初始化,销毁顺序

演示 - 初始化销毁顺序

/*
   初始化和销毁的执行顺序
*/
@SpringBootApplication
public class A07_1 {
   public static void main(String[] args) {
       ConfigurableApplicationContext context = SpringApplication.run(A07_1.class, args);
       context.close();
   }
   @Bean(initMethod = "init3")
   public Bean1 bean1() {
       return new Bean1();
   }
   @Bean(destroyMethod = "destroy3")
   public Bean2 bean2() {
       return new Bean2();
   }
}

Bean1

public class Bean1 implements InitializingBean {
   private static final Logger log = LoggerFactory.getLogger(Bean1.class);
   @PostConstruct
   public void init1() {
       log.debug("初始化1");
   }
   @Override
   public void afterPropertiesSet() throws Exception {
       log.debug("初始化2");
   }
   public void init3() {
       log.debug("初始化3");
   }
}

Bean2

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

输出结果:

Spring初始化与销毁顺序案例演示详解

Spring初始化与销毁顺序案例演示详解

总结:

Spring 提供了多种初始化手段,除了课堂上讲的 @PostConstruct,@Bean(initMethod) 之外,还可以实现 InitializingBean 接口来进行初始化,如果同一个 bean 用了以上手段声明了 3 个初始化方法,那么它们的执行顺序是

  • @PostConstruct 标注的初始化方法

  • InitializingBean 接口的初始化方法

  • @Bean(initMethod) 指定的初始化方法

与初始化类似,Spring 也提供了多种销毁手段,执行顺序为

  • @PreDestroy 标注的销毁方法

  • DisposableBean 接口的销毁方法

  • @Bean(destroyMethod) 指定的销毁方法

来源:https://blog.csdn.net/qq_61313896/article/details/128791257

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com