bean三种创建对象的方式
第一种:使用默认构造函数创建。
在bean标签中只配置id和class属性时,采用默认构造函数创建对象,如果类中没有默认构造函数,则对象无法创建。如下
<bean id="accountDao" class="cn.sdjz.dao.impl.AccountDaoImpl"></bean>
第二种:使用工厂中的方法创建对象(使用某个类中的方法创建对象)。
如下:要使用InstanceFactory类中的getAccountService方法来创建AccountService对象
<bean id="instanceFactory" class="cn.sdjz.factory.InstanceFactory"></bean>
<bean id="accountService" factory-bean="instanceFactory" factory-method="getAccountService"></bean>
第三种:使用工厂中的静态方法创建对象(使用某个类中的静态方法创建对象)
如下:使用StaticFactory类中的静态方法getAccountService创建AccountService对象
<bean id="accountService" class="cn.sdjz.factory.StaticFactory" factory-method="getAccountService"></bean>
bean的作用范围
由bean标签的scope属性调整
取值:最常用singleton和prototype
- singleton:单例对象(默认值)
- prototype:多例对象 request:
- 作用于web应用的请求范围
- session:所用于web应用的会话范围
- global-session:作用于集群环境的会话范围,当不是集群环境时,就当作session
bean的生命周期
-
单例对象:与容器的生命周期相同
出生:当容器创建时出生
活着:只要容器在一直活着
死亡:容器销毁,对象消亡 -
多例对象:
出生:当我们使用对象时创建
或者:对象在使用中一直活着
死亡:当对象长时间不用,被Java的垃圾回收器回收时死亡