Spring Bean的生命週期

Spring IoC容器的本質是管理Bean,對於Bean而言在容器中有其存在的生命週期。它的初始化和銷燬也需要一個過程。Bean的生命週期主要了解Spring IoC容器初始化和銷燬Bean的過程。爲了定義安裝和拆卸一個 bean,我們只要聲明帶有 init-method 和/或 destroy-method 參數的 。init-method 屬性指定一個方法,在實例化 bean 時,立即調用該方法。同樣,destroy-method 指定一個方法,只有從容器中移除 bean 之後,才能調用該方法。

 

Bean的生命週期可以表達爲:Bean的定義——Bean的初始化——Bean的使用——Bean的銷燬 

1.1 定義Bean

 這是Bean配置文件

 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
     <bean id="HelloWorld" class="com.spring.chapter2.HelloWorld" init-method="init" destroy-method="destroy">
          <property name="say" value="世界你好"></property>
    </bean>
  </beans>

1.2下面是HelloWorld.java的定義:

 1 package com.spring.chapter2;
 2 
 3 public class HelloWorld {
 4 
 5     
 6     public String getSay() {
 7         return say;
 8     }
 9     public void setSay(String say) {
10         this.say = say;
11     }
12     private String say;
13     
14     
15     public void init(){
16         System.out.println(say+"Bean 開始初始化...");
17         
18     }
19     public void destroy(){
20         System.out.println(say+"Bean 開始銷燬...");
21     }
22 
23 }

2.1 下面是 Main.java 文件的內容。

1     public static void main(String[] args) {
2         
3         AbstractApplicationContext applicationContext=newClassPathXmlApplicationContext("spring_xml/spring.xml");
4         HelloWorld helloWorld=(HelloWorld)applicationContext.getBean("HelloWorld");
5         System.out.println(helloWorld.getSay());
6         applicationContext.registerShutdownHook(); //AbstractApplicationContext 類中聲明的關閉 hook 的 registerShutdownHook()方法。它將確保正常關閉,並且調用相關的 destroy 方法。
7     }

2.2測試結果

 

默認的初始化和銷燬方法

如果你有太多具有相同名稱的初始化或者銷燬方法的 Bean,那麼你不需要在每一個 bean 上聲明初始化方法銷燬方法。框架使用 元素中的 default-init-method 和 default-destroy-method 屬性提供了靈活地配置這種情況,如下所示:

 1 <beans xmlns="http://www.springframework.org/schema/beans"
 2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://www.springframework.org/schema/beans
 4     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
 5     default-init-method="init" 
 6     default-destroy-method="destroy">
 7 
 8    <bean id="..." class="...">
 9       ...
10    </bean>
11 
12 </beans>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章