Spring init-method和destroy-method 的使用

 

  Spring 为了满足开发者在执行某方法之前或者在结束某个任务之前需要操作的一些业务,则提供了init-method和destroy-method  这两个属性,这两个属性需要加载在bean节点中。

  下面上代码部分,为了完整性,我把 IOC和 依赖注入也加入

 

  一、首先我们创建一个接口StudentService.java

 1 package cn.demo.service;
 2 
 3 /**
 4  * 接口
 5  * @author xkjava
 6  * @date 2015-07-12
 7  */
 8 public interface StudentService {
 9     
10     public void helloSpring(String str);
11 
12 }

 

 

 

  

  二、StudentServiceImpl.java 实现类 

 

 1 package cn.demo.service.impl;
 2 
 3 import java.io.Serializable;
 4 
 5 import cn.demo.service.StudentService;
 6 
 7 public class StudentServiceImpl implements StudentService,Serializable{
 8 
 9     
10     /**
11      * 
12      */
13     private static final long serialVersionUID = 6130145558179499205L;
14 
15     
16     /**
17      * demo测试
18      */
19     @Override
20     public void helloSpring(String str) {
21         // TODO Auto-generated method stub
22         System.err.println("这里正常执行  this is "+str);
23     }
24     
25     /**
26      * 执行helloSpring 之前执行
27      */
28     public void inits(){
29         System.err.println("这里在 执行helloSpring之前执行! ");
30     }
31     
32     
33     /**
34      * 摧毁 对象前调用
35      */
36     public void shutdown(){
37         System.err.println("销毁 studentService 对象实例 前 调用 shutdown() 方法");
38     }
39 
40 }

 

 

 

 

  三、Spring XML文件

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
 4     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
 5     xsi:schemaLocation="  
 6          http://www.springframework.org/schema/context   
 7          http://www.springframework.org/schema/context/spring-context-3.0.xsd    
 8      http://www.springframework.org/schema/beans   
 9      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
10      http://www.springframework.org/schema/tx   
11      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
12      http://www.springframework.org/schema/aop   
13      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
14         
15     <!-- 注意 init-method 和 destroy-method 所加载的方法名字 和 StudentServiceImpl.java中对比 -->    
16     <bean id="stu" class="cn.demo.service.impl.StudentServiceImpl" init-method="inits" destroy-method="shutdown"></bean>
17 
18 </beans>

 

 

 

 

  四、TestDemo.java测试类

 

 1 package cn.demo.test;
 2 
 3 import java.io.Serializable;
 4 
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.context.ApplicationContext;
 7 import org.springframework.context.support.ClassPathXmlApplicationContext;
 8 
 9 import cn.demo.service.StudentService;
10 
11 /**
12  * 测试
13  * @author xkjava
14  *
15  */
16 public class TestDemo implements Serializable {
17 
18     
19     /**
20      * 
21      */
22     private static final long serialVersionUID = 6343872716391435079L;
23     
24 
25     /**
26      * main入口
27      */
28     public static void main(String[] args){
29         
30         
31         ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
32         
33         StudentService studentService = context.getBean("stu", StudentService.class);
34         
35         studentService.helloSpring("Hello! Spring!");
36         
37         //摧毁studentService实例对象
38         ((ClassPathXmlApplicationContext) context).close();  
39         
40     }
41 }

 

 

 

   注意:

  在执行完毕后需要 将 ((ClassPathXmlApplicationContext) context).close();   Close 关闭 才可执行 destroy-method

 posted on 2015-07-12 23:17  蓝博文  阅读(13544)  评论(0编辑  收藏  举报