Spring Bean的初始化和銷毀實例詳解
本文實例講述了Spring Bean的初始化和銷毀。分享給大家供大家參考,具體如下:
一 點睛
在開發(fā)過程中,經(jīng)常遇到在Bean使用之前或者之后做一些必要的操作,Spring對Bean的生命周期的操作提供了支持。
1 Java配置方式:使用@Bean的initMethod和destroyMethod。
2 注解方式:利用JSR-250的@PostConstruct和@PreDestroy。
二 實戰(zhàn)
1 增加JSR250支持
<dependency> <groupId>javax.annotation</groupId> <artifactId>jsr250-api</artifactId> <version>1.0</version> </dependency>
2 使用@Bean形式的Bean
package com.wisely.highlight_spring4.ch2.prepost; public class BeanWayService { public void init(){ System.out.println("@Bean-init-method"); } public BeanWayService() { super(); System.out.println("初始化構(gòu)造函數(shù)-BeanWayService"); } public void destroy(){ System.out.println("@Bean-destory-method"); } }
3 使用JSR250形式的Bean
package com.wisely.highlight_spring4.ch2.prepost; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; public class JSR250WayService { @PostConstruct //在構(gòu)造函數(shù)執(zhí)行之后執(zhí)行 public void init(){ System.out.println("jsr250-init-method"); } public JSR250WayService() { super(); System.out.println("初始化構(gòu)造函數(shù)-JSR250WayService"); } @PreDestroy //在Bean銷毀之前執(zhí)行 public void destroy(){ System.out.println("jsr250-destory-method"); } }
4 編寫配置類
package com.wisely.highlight_spring4.ch2.prepost; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("com.wisely.highlight_spring4.ch2.prepost") public class PrePostConfig { //initMethod和destroyMethod指定BeanWayService類的 //init和destroy方法在構(gòu)造函數(shù)之后、Bean銷毀之前執(zhí)行 @Bean(initMethod="init",destroyMethod="destroy") BeanWayService beanWayService(){ return new BeanWayService(); } @Bean JSR250WayService jsr250WayService(){ return new JSR250WayService(); } }
5 編寫主類
package com.wisely.highlight_spring4.ch2.prepost; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(PrePostConfig.class); BeanWayService beanWayService = context.getBean(BeanWayService.class); JSR250WayService jsr250WayService = context.getBean(JSR250WayService.class); context.close(); } }
三 測試
八月 06, 2018 9:53:47 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@1f17ae12: startup date [Mon Aug 06 21:53:47 CST 2018]; root of context hierarchy
初始化構(gòu)造函數(shù)-BeanWayService
@Bean-init-method
初始化構(gòu)造函數(shù)-JSR250WayService
jsr250-init-method
八月 06, 2018 9:53:47 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
信息: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@1f17ae12: startup date [Mon Aug 06 21:53:47 CST 2018]; root of context hierarchy
jsr250-destory-method
@Bean-destory-method
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Spring框架入門與進階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
Spring Cloud引入Eureka組件,完善服務(wù)治理
這篇文章主要介紹了Spring Cloud引入Eureka組件,完善服務(wù)治理的過程詳解,幫助大家更好的理解和使用spring cloud,感興趣的朋友可以了解下2021-02-02Tomcat集群和Session復(fù)制應(yīng)用介紹
本文將詳細介紹Tomcat集群和Session復(fù)制應(yīng)用,需要了解的朋友可以參考下2012-11-11解析rainbond以應(yīng)用為中心的架構(gòu)設(shè)計原理
這篇文章主要為大家介紹了rainbond以應(yīng)用為中心的架構(gòu)設(shè)計實現(xiàn)及原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-02-02MyBatis-Plus 之selectMaps、selectObjs、selectCount、selectO
本文主要介紹了MyBatis-Plus 之selectMaps、selectObjs、selectCount、selectOne的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03