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();
}
}