快速业务通道

Spring受管Bean的预处理和后处理 二 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

Spring受管Bean的预处理和后处理 二

时间:2011-10-02 残梦追月

使用回调接口对受管Bean进行与处理和后处理

1、初始化回调接口InitializingBean  要对某个受管Bean进行预处理里时,可以实现Spring定义的 初始化回调接口InitializingBean,它定义了一个方法如下:

1 void afterPropertiesSet() throws Exception

开发者可以在受管Bean中实现该接口,再在此方法中对受管Bean进行预处理。

注意:应该尽量避免使用这种方法,因为这种方法会将代码与Spring耦合起来。推荐使用下面的使用 init-method方法。

2、析构回调接口DisposableBean  同上面一样,要对受管Bean进行后处理,该Bean可以实现析构回 调接口DisposableBean,它定义的方法如下:

1 void destroy() throws Exception

为了降低与Spring的耦合度,这种方法也不推荐。

下面的例子(例程3.6)简要的展示如何使用这两个接口。

新建Java工程,名字为IoC_Test3.6,为其添加Spring开发能力后,新建一ioc.test包,添加一个 Animal类,该类实现InitializingBean接口和DisposableBean接口,再为其添加name和age成员,Geter和 Seter方法,speak方法。完成后代码如下:

1 package ioc.test; 2 3 import org.springframework.beans.factory.DisposableBean; 4 import org.springframework.beans.factory.InitializingBean; 5 6 public class Animal implements InitializingBean, DisposableBean { 7 8 private String name; 9 private int age; 10 11 public String speak(){ 12 return "我的名字:"+this.name+"我的年龄:"+this.age; 13 } 14 15 public void afterPropertiesSet() throws Exception { 16 System.out.println("初始化接口afterPropertiesSet()方法正在运行!"); 17 } 18 19 public void destroy() throws Exception { 20 System.out.println("析构接口destroy()方法正在运行!"); 21 } 22 23 //Geter和Seter省略 24 25 } 26

Spring受管Bean的预处理和后处理 二(2)

时间:2011-10-02 残梦追月

在配置文件中配置受管Bean,代码如下:

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans 3 xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 7 <bean id="animal" class="ioc.test.Animal"> 8 9 <property name="age" value="5"></property> 10 <property name="name" value="猪"></property> 11 12 </bean> 13 14 </beans> 15

新建含有主方法的TestMain类,添加测试代码,如下:

1 package ioc.test; 2 3 import org.springframework.context.support.AbstractApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 public class TestMain { 7 8 public static void main(String[] args) { 9 10 AbstractApplicationContext ac = new ClassPathXmlApplicationContext ("applicationContext.xml"); 11 //注册容器关闭钩子,才能关掉容器,调用析构方法 12 ac.registerShutdownHook(); 13 Animal animal = (Animal)ac.getBean("animal"); 14 System.out.println(animal.speak()); 15 16 } 17 } 18

Spring受管Bean的预处理和后处理 二(3)

时间:2011-10-02 残梦追月

运行工程,结果如下:

Spring受管Bean的预处理和后处理 二 - 编程入门网

以看到,Spring IoC容器自动的调用了两个接口的相关方法对bean进行了预处理和后处理。

注意:由于后处理是在Bean被销毁之前调用,所有要在MyEclipse中看到后处理方法的输出,必须先注 册容器的关闭钩子,在主方法退出时关掉容器,这样其管理的Bean就会被销毁。当然也可以直接调用容器 的close方法来显示的关闭容器。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号