Spring中Bean的生命週期

這裏我只討論Bean是怎樣初始化的:

Ø  對於singleton Beanspring能夠管理它的生命週期,知道其什麼時候實例化,什麼時候銷燬。

Ø  對於non-singleton Beanspring沒有管理它的生命週期,而是交給客戶端自己管理,每次客戶端發送一個請求就會創建一個實例。

Ø  如果Beannon-singleton,則不會在spring加載的時候實例化,而是在每次用到的時候實例化。

Ø  如果Beansingleton而且沒有設置lazy-init="true",就在spring加載的時候實例化。如果設置了lazy就在第一次調用的時候實例化

 

Fengshan.java:
public class Fengshan {
  public Fengshan(){
    System.out.println("---------創建");
  }
}
 
 
Test.java:
public class Test extends TestCase {
  public void testBean(){
    //加載spring配置文件
    ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
    //調用bean
    //Fengshan fengshan = (Fengshan) ctx.getBean("fengshan");
  }
}
 
 
bean.xml:spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
  <!—1.單例非lazy,此bean在spring配置文件加載時實例化-->
  <bean id="fengshan" class="com.dvnchina.test.Fengshan" scope="singleton" />    
    
  <!—2.單例lazy,所以此bean在spring配置文件加載時不實例化,只在第一次使用此bean時實例化-->
  <!--
  <bean id="fengshan" class="com.dvnchina.test.Fengshan" scope="singleton" lazy-init="true" />
  
-->
    
  <!—3.非單例,此bean在spring配置文件加載時不實例化,每次請求此bean時都實例化-->
  <!--
  <bean id="fengshan" class="com.dvnchina.test.Fengshan" scope="prototype" />
  
-->
</beans>
 
可以分別使用配置文件中123看看是否創建了bean來驗證以上的結論。附件爲例子工程(Spring_BeanLifecycle),可直接導入eclipse
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章