Spring bean 通過實現 InitializingBean ,DisposableBean 介面實現初始化方法和銷燬前操作
關於在spring 容器初始化 bean 和銷燬前所做的操作定義方式有三種:
第一種:通過@PostConstruct 和 @PreDestroy 方法 實現初始化和銷燬bean之前進行的操作
第二種是:通過 在xml中定義init-method 和 destory-method方法
第三種是:通過bean實現InitializingBean和DisposableBean介面
1:定義相應類實現InitializingBean ,DisposableBean 介面
- package com.myapp.core.annotation.init;
- import javax.annotation.PostConstruct;
- import javax.annotation.PreDestroy;
- import org.springframework.beans.factory.DisposableBean;
- import org.springframework.beans.factory.InitializingBean;
- public class PersonService implements InitializingBean,DisposableBean{
- private String message;
- public String getMessage() {
- return message;
- }
- public void setMessage(String message) {
- this.message = message;
- }
- @Override
- public void destroy() throws Exception {
- // TODO Auto-generated method stub
- System.out.println("I'm init method using implements InitializingBean interface...."+message);
- }
- @Override
- public void afterPropertiesSet() throws Exception {
- // TODO Auto-generated method stub
- System.out.println("I'm init method using implements DisposableBean interface...."+message);
- }
- }
2:定義相應的配置檔案:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.1.xsd">
- <!-- <context:component-scan base-package="com.myapp.core.jsr330"/> -->
- <!-- <context:annotation-config /> -->
- <!-- <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
- <bean id="personService" class="com.myapp.core.annotation.init.PersonService">
- <property name="message" value="123"></property>
- </bean>
- -->
- <bean id="personService" class="com.myapp.core.annotation.init.PersonService">
- <property name="message" value="123"></property>
- </bean>
- </beans>
3:測試類:
- package com.myapp.core.annotation.init;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.AbstractApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class MainTest {
- public static void main(String[] args) {
- AbstractApplicationContext context = new ClassPathXmlApplicationContext("resource/annotation.xml");
- PersonService personService = (PersonService)context.getBean("personService");
- context.registerShutdownHook();
- }
- }
4:輸出測試結果:
- I'm init method using implements DisposableBean interface....123
- 三月 16, 2013 5:06:34 下午 org.springframework.context.support.AbstractApplicationContext doClose
- INFO: Closing org.springframework.context.support.ClassPathXmlApplicationContext@205756: startup date [Sat Mar 16 17:06:30 CST 2013]; root of context hierarchy
- I'm init method using implements InitializingBean interface....123
相關文章
- 4_Spring Bean的初始化和銷燬SpringBean
- Spring Prototype Bean手動銷燬4種方法SpringBean
- 【Spring註解驅動開發】使用InitializingBean和DisposableBean來管理bean的生命週期,你真的瞭解嗎?SpringBean
- 【spring原始碼系列】之【Bean的銷燬】Spring原始碼Bean
- Spring原始碼之Bean的載入(五) populateBean 和 DisposableBeanSpring原始碼Bean
- Spring Boot 通過CORS實現跨域Spring BootCORS跨域
- 通過Spring Boot Webflux實現Reactor KafkaSpring BootWebUXReactKafka
- Spring中通過Annotation來實現AOPSpring
- 如何實現Spring中服務關閉時物件銷燬執行程式碼Spring物件行程
- 通過API介面實現圖片上傳API
- Python 通過List 實現佇列的操作Python佇列
- 通過佇列實現棧OR通過棧實現佇列佇列
- 【Golang】Go 通過結構(struct) 實現介面(interface)GolangStruct
- 【Spring註解驅動開發】如何使用@Bean註解指定初始化和銷燬的方法?看這一篇就夠了!!SpringBean
- NCF 如何通過WebApi實現前後端分離WebAPI後端
- Spring AOP實現過程Spring
- 通過模板實現POI
- LRU 實現 通過 LinkedHashMapHashMap
- WebSocket實現前後端通訊Web後端
- Spring 原始碼(17)Spring Bean的建立過程(8)Bean的初始化Spring原始碼Bean
- 使用 Spring Validator 介面實現驗證Spring
- Spring框架系列(13) - SpringMVC實現原理之DispatcherServlet的初始化過程框架SpringMVCServlet
- 通過redis實現session共享RedisSession
- 獲取Spring容器中Bean例項的工具類(Java泛型方法實現)SpringBeanJava泛型
- springCloud 微服務通過minio實現檔案上傳和檔案下載介面SpringGCCloud微服務
- 如何實現通過JAVA遠端執行重啟tomcat操作?JavaTomcat
- 在Spring Boot中實現WebSocket實時通訊Spring BootWeb
- 通過自動化和現代化實現網路優化優化
- 介面的定義和實現
- Spring MVC實現過程淺析SpringMVC
- 通過 App Groups 實現程式間通訊APP
- String操作方法底層實現!!!
- org.reflections 介面通過反射獲取實現類原始碼研究反射原始碼
- 撤銷和回退的實現
- 如果通過流資料實現實時分析?
- 透過API介面實現資料探勘?API
- Spring Boot整合Spring Cloud Task實現批處理操作Spring BootCloud
- Python培訓教程分享:如何實現pygame的初始化和退出操作?PythonGAM
- 基於DotNetty實現一個介面自動釋出工具 - 通訊實現Netty