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
相關文章
- 通過Spring @PostConstruct 和 @PreDestroy 方法 實現初始化和銷燬bean之前進行的操作SpringStructBean
- Spring原始碼學習之: 通過Spring @PostConstruct 和 @PreDestroy 方法 實現初始化和銷燬bean之前進行的操作Spring原始碼StructBean
- Spring知識點回顧(05)bean的初始化和銷燬SpringBean
- spring bean初始化及銷燬你必須要掌握的回撥方法。SpringBean
- 【spring原始碼系列】之【Bean的銷燬】Spring原始碼Bean
- 【Spring註解驅動開發】使用InitializingBean和DisposableBean來管理bean的生命週期,你真的瞭解嗎?SpringBean
- 如何實現Spring中服務關閉時物件銷燬執行程式碼Spring物件行程
- 通過API介面實現圖片上傳API
- Java的代理模式(通過公共介面實現)Java模式
- spring InitializingBean介面SpringBean
- 通過Spring Boot Webflux實現Reactor KafkaSpring BootWebUXReactKafka
- Spring中通過Annotation來實現AOPSpring
- Spring Boot 通過CORS實現跨域Spring BootCORS跨域
- Spring原始碼之Bean的載入(五) populateBean 和 DisposableBeanSpring原始碼Bean
- 通過佇列實現棧OR通過棧實現佇列佇列
- 【Golang】Go 通過結構(struct) 實現介面(interface)GolangStruct
- NCF 如何通過WebApi實現前後端分離WebAPI後端
- Python 通過List 實現佇列的操作Python佇列
- 【Spring註解驅動開發】如何使用@Bean註解指定初始化和銷燬的方法?看這一篇就夠了!!SpringBean
- Java+MyEclipse+Tomcat (五)DAO和Java Bean實現資料庫和介面分開操作JavaEclipseTomcatBean資料庫
- 通過模板實現POI
- WebSocket實現前後端通訊Web後端
- 通過 Spring AOP 註解實現自動代理Spring
- Spring核心介面之InitializingBeanSpringBean
- Java通過wait()和notifyAll()方法實現執行緒間的通訊JavaAI執行緒
- spring管理bean的生命週期與spring通過工廠方法配置beanSpringBean
- Spring通過factory配置beanSpringBean
- 通過nginx部署前端程式碼實現前後端分離Nginx前端後端
- Spring AOP實現過程Spring
- EA UML 介面和實現
- LRU 實現 通過 LinkedHashMapHashMap
- 通過redis實現session共享RedisSession
- PHP通過反射實現物件的成員方法呼叫PHP反射物件
- 撤銷和回退的實現
- 通過自動化和現代化實現網路優化優化
- C# 通過socket實現UDP 通訊C#UDP
- Spring 原始碼(17)Spring Bean的建立過程(8)Bean的初始化Spring原始碼Bean
- 介面的定義和實現