1、通過@javax.annotation.PostConstruct和@javax.annotation.PreDestroy定義
package com.xiaochuange.platform.spring4;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
/**
* @Desc:
* @Auther: spring
* @Date: 2018-9-12 14:56
*/
@Component("initAndDestoryService")
public class InitAndDestoryService {
// 銷燬之前執行
@PreDestroy
public void methodPreDestroy() {
System.out.println("InitAndDestoryService @PreDestroy invoke...");
}
// 初始化之前執行
@PostConstruct
public void methodPostConstruct() {
System.out.println("InitAndDestoryService @PostConstruct invoke...");
}
}
2、通過xml配置文件指定init-method和destroy-method
package com.xiaochuange.platform.spring4;
/**
* @Desc:
* @Auther: spring
* @Date: 2018-9-12 15:03
*/
public class XmlInitAndDestoryService {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void methodInit(){
System.out.println("XmlInitAndDestoryService methodInit invoke..." + message);
}
public void methodDestory(){
System.out.println("XmlInitAndDestoryService methodDestory invoke..." + message);
}
}
applicationContext.xml
<bean id="xmlInitAndDestoryService"
class="com.xiaochuange.platform.spring4.XmlInitAndDestoryService"
init-method="methodInit" destroy-method="methodDestory">
<property name="message" value="234"></property>
</bean>
3、通過bean實現InitializingBean和DisposableBean接口
package com.xiaochuange.platform.spring4;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
/**
* @Desc:
* @Auther: spring
* @Date: 2018-9-12 14:27
*/
public class InitializingBeanAndDisposableBeanService 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 {
// 銷燬時的操作
System.out.println("InitializingBeanAndDisposableBeanService destroy() invoke..." + message);
}
@Override
public void afterPropertiesSet() throws Exception {
// 初始化時的操作
System.out.println("InitializingBeanAndDisposableBeanService afterPropertiesSet() invoke..." + message);
}
}
applicationContext.xml
<bean id="personService" class="com.xiaochuange.platform.spring4.InitializingBeanAndDisposableBeanService">
<property name="message" value="123"></property>
</bean>
4、測試
package com.xiaochuange.platform.spring4;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @Desc:
* @Auther: spring
* @Date: 2018-9-12 14:45
*/
public class MainTest {
public static void main(String[] args) {
AbstractApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
InitializingBeanAndDisposableBeanService personService = (InitializingBeanAndDisposableBeanService) context.getBean("personService");
InitAndDestoryService initAndDestoryService = (InitAndDestoryService) context.getBean("initAndDestoryService");
XmlInitAndDestoryService xmlInitAndDestoryService = (XmlInitAndDestoryService) context.getBean("xmlInitAndDestoryService");
context.registerShutdownHook();
// 輸出如下:
// InitAndDestoryService @PostConstruct invoke...
// InitializingBeanAndDisposableBeanService afterPropertiesSet() invoke...123
// XmlInitAndDestoryService methodInit invoke...234
// XmlInitAndDestoryService methodDestory invoke...234
// InitializingBeanAndDisposableBeanService destroy() invoke...123
// InitAndDestoryService @PreDestroy invoke...
}
}