Bean對象創建
默認是隨着容器創建
可以使用 lazy-init=true:在調用 getBean 延遲創建
也可以用 <beans default-lazy-init="true"/> 批量延遲創建
Bean對象的創建模式
默認是單例,可以使用scope屬性改變。
singleton:單例,每次調用getBean返回同一個對象
prototype:原型,每次調用getBean返回一個新的對象
Bean對象初始化和銷毀
init-method 屬性用於指定初始化方法
spring 容器創建完對象后,將會執行 xml 文件中指定的初始化方法,單例模式中初始化方法只會執行一次
destroy-method 屬性用於指定銷毀方法,僅適用於 singleton 模式,
在調用 AbstractApplicationContext 對象的 close() 方法時觸發
三種實例化bean的方式
1.使用類構造器實例化
<bean id=“userService" class="service.UserService"/>
2.使用靜態工廠方法實例化
<bean id="userService" class="service.UserFactory" factory-method="createUser"/>
public class UserFactory {
public static UserService createUser(){
return new UserService();
}
}
3.使用實例工廠方法實例化:
<bean id="userServiceFactory" class="service.UserFactory"/>
<bean id="userService" factory-bean="userServiceFactory" factory-method="createUser"/>
public class UserFactory {
public UserService createUser(){
return new UserService();
}
}