Spring Bean的初始化和銷燬
1. Bean 的初始化執行流程
Spring 提供了多種初始化和銷燬的方法
編寫相關Bean程式碼:
public class Bean1 implements InitializingBean {
@PostConstruct
public void init1(){
System.out.println("初始化1");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("初始化2");
}
public void int3(){
System.out.println("初始化3");
}
}
編寫主方法測試:
@SpringBootApplication
public class A07Application {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(A07Application.class, args);
context.close();
}
@Bean(initMethod = "init3") // 指定初始化方法
public Bean1 bean1(){
return new Bean1();
}
}
初始化1
初始化2
初始化3
在初始化的時候首先會執行由基於擴充套件功能的@PostConstruct註解的方法,接著就是Spring內建介面的初始化方法,最後就是由@Bean註解裡指定的初始化方法
2. Bean 的銷燬執行流程
接下來看銷燬方法:
是首先編寫一個Bean:
public class Bean2 implements DisposableBean {
@PreDestroy
public void destroy1(){
System.out.println("銷燬1");
}
@Override
public void destroy() throws Exception {
System.out.println("銷燬2");
}
public void destroy3(){
System.out.println("銷燬3");
}
}
編寫主方法:
@SpringBootApplication
public class A07Application {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(A07Application.class, args);
context.close();
}
@Bean(destroyMethod = "destroy3")
public Bean2 bean2(){
return new Bean2();
}
}
執行結果如下:
銷燬1
銷燬2
銷燬3
在銷燬Bean的時候首先會執行基於擴充套件功能的@PreDestroy指定的方法,其次是Spring內建介面功能的銷燬,最後執行的是基於@Bean註解裡面指定的銷燬方法。