一 , 创建Bean对象的三种方式
1 , 第一种,使用全限定类名反射创建的方式
<bean id="userService" class="com.qyy.service.impl.UserServiceImpl"></bean>
2 , 第二种,使用对象的静态方法创建
<!--第二种;使用对象的静态方法创建 factory-method="getUserService" 用于指定静态方法名称, -->
<!--class属性指定提供静态方法的全限定类名-->
<bean id="staticUserServie" class="com.qyy.factory.StaticFactory" factory-method="getUserService"></bean>
3 , 第二种,使用对象的非态方法创建
<!--先把非静态工厂对象配置出来-->
<bean id="instanceFactory" class="com.qyy.factory.InstanceFactory"></bean>
<!--使用factory-bean引用工厂对象的bean的id,factory-method制定创建的方法-->
<bean id="instanceUserService" factory-bean="instanceFactory" factory-method="getUserService"></bean>
public class InstanceFactory {
public IUserService getUserService(){
return new UserServiceImpl();
}
}
public class StaticFactory {
public static IUserService getUserService(){
return new UserServiceImpl();
}
}
开发中配置以第一种为主
二 , Bean对象的作用范围
singleton 单例的 默认值
prototype 多例的
request 作用范围在请求域(请求范围)
session 作用范围在会话域(一次会话)
global-session 作用范围在全局会话(在非集群环境下,它就是session)
-scope属性 singleton 是单例(默认值) prototype 多例的
<bean id="userService" class="com.qyy.service.impl.UserServiceImpl" scope="prototype" ></bean>
Bean对象的生命周期
单例对象 : 出生 - 容器创建时,对象就创建了
活着 - 容器在,对象就一直可用(活着的状态)
死亡 - 容器销毁,对象就消亡了
和容器的生命周期下相同,
多例对象 出生 - 每次对象使用时,都会创建新的
活着 - 对象在使用过程中一直活着
死亡 - 当对象长时间不用时,由垃圾回复机制回收