1) 對象創建:
單例/多例
? ??scope="singleton", 默認值,即默認是單例【service/dao/工具類】
? ?scope="prototype", 多例;【Action對象】
2) 什么時候創建?
? scope="prototype" ?在用到對象的時候,才創建對象。? scope="singleton" ?在啟動(容器初始化之前), 就已經創建了bean,且整個應用只有一個。
3)是否延遲創建
?lazy-init="false" ?默認為false, ?不延遲創建,即在啟動時候就創建對象?lazy-init="true" ? 延遲初始化, 在用到對象的時候才創建對象
? (lazy-init只對單例有效)? ? ? ?
4) 創建對象之后,初始化/銷毀
?init-method="init_user" ?【對應對象的init_user方法,在對象創建之后執行 】? destroy-method="destroy_user" ?
【在調用容器對象的destriy方法時候執行,(容器用實現類),scope="singleton" 時有效】
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><bean id="userId" class="b_bean.User" scope="singleton" lazy-init="false"init-method="init_user" destroy-method="destroy_user"></bean></beans>
package b_bean;public class User {private int id;private String name;public User() {System.out.println("User對象創建....");}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void init_user(){System.out.println("init_user.....");}public void destroy_user(){System.out.println("destroy_user.....");}}
package b_bean;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class CreateBean {@Testpublic void test(){//ApplicationContext context=new ClassPathXmlApplicationContext("b_bean/applicationContext.xml");//為了測試destroy-method,接口沒有方法ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("b_bean/applicationContext.xml");System.out.println("ApplicationContext容器對象創建....");User user1=(User) context.getBean("userId");User user2=(User) context.getBean("userId");System.out.println(user1);System.out.println(user2);context.destroy();}
}