Bean的創建方式
第一種方式:使用默認構造函數創建
在spring的配置文件中使用bean標籤,配以id和class屬性之後,且沒有其他屬性和標籤時。
採用的就是默認構造函數創建bean對象,此時如果類中沒有默認構造函數,則對象無法創建。
<bean id="userDao" class="cn.td.dao.impl.UserDaoImpl"/>
第二種方式: 使用普通工廠中的方法創建對象
使用某個工廠類中的方法創建對象,並存入spring容器
factory-bean:工廠類bean的id factory-method:工廠類bean中創建對象的方法
<bean id="instanceFactory" class="cn.td.factory.InstanceFactory"/>
<bean id="userService" factory-bean="instanceFactory" factory-method="getUserService"/>
第三種方式:使用工廠中的靜態方法創建對象
factory-bean:工廠類bean的id factory-method:工廠類bean中創建對象的靜態方法
<bean id="userService" class="cn.td.factory.StaticInstanceFactory" factory-method="getUserService"/>
bean的作用範圍
bean標籤的scope屬性:用於指定bean的作用範圍
取值: 常用的就是單例的和多例的
singleton:單例的(默認值)
prototype:多例的
request:作用於web應用的請求範圍
session:作用於web應用的會話範圍
global-session:作用於集羣環境的會話範圍(全局會話範圍),當不是集羣環境時,它就是session
bean對象的生命週期
單例對象
出生:當容器創建時對象出生
活着:只要容器還在,對象一直活着
死亡:容器銷燬,對象消亡
總結:單例對象的生命週期和容器相同
多例對象
出生:當我們使用對象時spring框架爲我們創建
活着:對象只要是在使用過程中就一直活着。
死亡:當對象長時間不用,且沒有別的對象引用時,由Java的垃圾回收器回收