1、定義Demo類:
package com.rhythmk.spring;
public class User {
public void Init ()
{
System.out.println("User 對象被 創建!");
}
// 計數器
public int Count=0;
public void Say()
{
this.Count++;
System.out.println("User 被"+this.Count+"次初始!");
}
public void Destory()
{
System.out.println("User 對象被銷毀!");
}
}
2、init-method:對象初始執行
destroy-method:對象銷毀執行:
執行單元測試:
@Test
public void test() {
BeanFactory bean=new ClassPathXmlApplicationContext("applicationContext.xml");
User user=(User)bean2.getBean("user");
user.Say();
}
輸出:
User 對象被 創建!
User 被1次初始!
3、scope ?包括?singleton單例模式 ?(默認)
prototype,Request, Session, Global Session
默認applicationContext.xml 配置 添加測試代碼:
private static BeanFactory bean= new ClassPathXmlApplicationContext("applicationContext.xml");
@Test
public void test1() {
User user=(User)bean.getBean("user");
user.Say();
}
@Test
public void test2() {
User user=(User)bean.getBean("user");
user.Say();
}
輸出:
User 對象被 創建!
User 被1次初始!
User 被2次初始!
修改applicationContext.xml 添加?scope=prototype
執行如上測試代碼:
輸出:
User 對象被 創建!
User 被1次初始!
User 被1次初始!
4、 ?lazy-init 默認為 false ,為true時,則在執行“BeanFactory bean= new ClassPathXmlApplicationContext("applicationContext.xml");”
并未執行初始化,只有在?bean.getBean("user") 才會執行函數初始:
package com.rhythmk.spring;
public class User {
// 計數器
public int Count=0;
public User()
{
System.out.println("User 被"+this.Count+"次初始!");
}
public void Say()
{
this.Count++;
System.out.println("User.Say!");
}
}
4.1 、默認配置:
輸出:
User 被0次初始!
開始執行測試!
User.Say!
4.2 、調整配置:
輸出:
開始執行測試!
User 被0次初始!
User.Say!