日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【Spring注解系列10】SpringBean的生命周期

發布時間:2025/3/20 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Spring注解系列10】SpringBean的生命周期 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.SpringBean生命周期定義

指bean創建---初始化----銷毀的過程。

構造(對象創建):

  • 單實例:在容器啟動的時候創建對象
  • 多實例:在每次獲取的時候創建對象

初始化和銷毀方式:

  • 指定初始化和銷毀方法;容器在bean進行到當前生命周期的時候來調用我們自定義的初始化和銷毀方法。

? ? ? ? ? ? @Bean中指定的 initMethod 和?destroyMethod

  • bean后置處理器BeanPostProcessor實現初始化:在bean初始化前后進行一些處理工作

? ? ? ? ? ? ?BeanPostProcessor.postProcessBeforeInitialization?初始化

? ? ? ? ? ? ? ? ? ?對象創建完成,并賦值好,調用初始化方法。。。

? ? ? ? ? ? ?BeanPostProcessor.postProcessAfterInitialization? 銷毀

? ? ? ? ? ? ? ? ? ? 單實例:容器關閉的時候
? ? ? ? ? ? ? ? ? ? 多實例:容器不會管理這個bean;容器不會調用銷毀方法;

  • 通過讓Bean實現InitializingBean 定義初始化邏輯,DisposableBean定義銷毀邏輯;
  • 使用JSR250注解@PostConstruct 和 @PreDestroy

? ? ? ? ? ? ?@PostConstruct:在bean創建完成并且屬性賦值完成;來執行初始化方法
? ? ? ? ? ? ?@PreDestroy:在容器銷毀bean之前通知我們進行清理工作


2.生命周期中執行順序

生命周期流程:

執行構造方法--->bean后置處理器--->@PostConstruct--->InitializingBean--->@Bea指定的初始化方法--->bean后置處理器

--->容器準備關閉(或者移除實例)--->?@PreDestroy--->DisposableBean--->@Bean指定的銷毀方法--->容器關閉

?

3.實例

//對象實例類 public class BeanLife implements InitializingBean,DisposableBean{public BeanLife() {System.out.println("構造方法:BeanLife--->construct...");}public void selfInit(){System.out.println("@Bean指定初始化方法:BeanLife--->selfInit");}public void selfDestroy(){System.out.println("@Bean指定初銷毀方法:BeanLife--->selfDestroy");}@PostConstructpublic void postConstruct(){System.out.println("@PostConstruct注解:BeanLife--->@PostConstruct.PostConstruct");}@PreDestroypublic void preDestroy(){System.out.println("@PreDestroy注解:BeanLife--->@PreDestroy.PreDestroy");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("InitializingBean接口:BeanLife--->InitializingBean.afterPropertiesSet");}@Overridepublic void destroy() throws Exception {System.out.println("DisposableBean接口:BeanLife--->DisposableBean.destroy");} }//后置處理器 public class MyBeanPostProcessor implements BeanPostProcessor {@Nullable@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println("bean后置處理器:MyBeanPostProcessor......postProcessBeforeInitialization");return bean;}@Nullable@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println("bean后置處理器:MyBeanPostProcessor......postProcessAfterInitialization");return bean;} }//配置類@Configuration public class BeanLifeCycleConfig {@Bean(value = "beanLife", initMethod = "selfInit", destroyMethod = "selfDestroy")public BeanLife life() {return new BeanLife();}@Beanpublic MyBeanPostProcessor myBeanPostProcessor(){return new MyBeanPostProcessor();} }//測試類public class BeanLifeCycleTest {public static void main(String[] args) {AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(BeanLifeCycleConfig.class);System.out.println("applicationContext ..... 初始化結束");System.out.println("applicationContext ..... 準備關閉");applicationContext.close();System.out.println("applicationContext ..... 已關閉");} }//測試結果: 構造方法:BeanLife--->construct... bean后置處理器:MyBeanPostProcessor......postProcessBeforeInitialization @PostConstruct注解:BeanLife--->@PostConstruct.PostConstruct InitializingBean接口:BeanLife--->InitializingBean.afterPropertiesSet @Bean指定初始化方法:BeanLife--->selfInit bean后置處理器:MyBeanPostProcessor......postProcessAfterInitialization applicationContext ..... 初始化結束 applicationContext ..... 準備關閉 @PreDestroy注解:BeanLife--->@PreDestroy.PreDestroy DisposableBean接口:BeanLife--->DisposableBean.destroy @Bean指定初銷毀方法:BeanLife--->selfDestroy applicationContext ..... 已關閉

?

總結

以上是生活随笔為你收集整理的【Spring注解系列10】SpringBean的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。