程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring受管Bean的預處理和後處理 二

Spring受管Bean的預處理和後處理 二

編輯:關於JAVA

使用回調接口對受管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

在配置文件中配置受管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 IoC容器自動的調用了兩個接口的相關方法對bean進行了預處理和後處理。

注意:由於後處理是在Bean被銷毀之前調用,所有要在MyEclipse中看到後處理方法的輸出,必須先注 冊容器的關閉鉤子,在主方法退出時關掉容器,這樣其管理的Bean就會被銷毀。當然也可以直接調用容器 的close方法來顯示的關閉容器。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved