springBean的生命周期
bean标签
作用:配置javabean对象,默认调用无参构造方法实例化对象。
属性 | 说明 |
---|---|
id | bean的唯一标识 |
class | 类的全限定名称 |
scope | 设置bean的作用范围 取值:singleton:单例。默认值 prototype 多例 |
init-method | 指定类中初始化方法的名称,在构造方法执行完毕后立即执行 |
destory-method | 指定类中销毁方法的名称,在销毁spring容器前执行 |
bean的生命周期
单例:scorp=“singleton”
出生:当容器创建时对象出生
活着:只要容器存在,对象就一直活着
死亡:容器销毁,对象死亡
单例的生命周期和容器相同
多例:scorp=”prototype“
出生:第一次使用对象,对象出生
活着:只要对象在使用过程中,就一直活着
死亡:当对象不再使用,或没有被其他对象引用,由java垃圾回收器回收。
spring实例化bean的三种方式
无参构造方法实例化
默认使用无参数构造方法,创建对象
配置bean.xml
<bean id="customerDao" class="com.xt.dao.impl.CustomerDaoImpl"
scope="singleton" init-method="init" destroy-method="destroy"
></bean>
静态工厂实例化
编写工厂类
public class StaticFactoryBean {
/**
* 工厂方法,注意:static关键子。该方法是静态的
*/
public static CustomerDao createCustomerDao(){
// 返回结果
CustomerDao customerDao = null;
System.out.println("静态工厂方法实例化对象----------------------start");
customerDao = new CustomerDaoImpl();
System.out.println("静态工厂方法实例化对象----------------------end");
return customerDao;
}
}
配置bean.xml
<!--静态工厂方法实例化对象,说明:
属性:
id:唯一标识名称
class:类全路径
factory-method:指定工厂方法
-->
<bean id="staticDao" class="com.xt.factory.StaticFactoryBean" factory-method="createCustomerDao"></bean>
实例工厂方法实例化
工厂类
public class InstanceFactoryBean {
/**
* 工厂方法,该方法是一个普通方法
*/
public CustomerDao createCustomerDao(){
// 返回结果
CustomerDao customerDao = null;
System.out.println("实例工厂方法实例化对象----------------------start");
customerDao = new CustomerDaoImpl();
System.out.println("实例工厂方法实例化对象----------------------end");
return customerDao;
}
}
配置bean.xml
<!--实例工厂方法实例化对象,说明:
第一步:配置静态工厂对象
第二步:
factory-bean:指定工厂对象
factory-method:指定工厂方法
-->
<bean id="instanceFactory" class="com.xt.factory.InstanceFactoryBean"></bean>
<bean id="instanceDao" factory-bean="instanceFactory" factory-method="createCustomerDao"></bean>