<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    作用域將對Bean的生命周期和創建方式產生影響.

    singleton??????????? 在spring IOC容器中僅存在一個Bean實例,Bean以單實例的方式存在.


    prototype??????????? 每次從容器中調用Bean時,都返回一個新的實例,即每次調用getBean()時,相當于執行new XxxBean()的操作.


    request?????????????? 每次HTTP請求都會創建一個新的Bean,該作用域僅適用于webApplicationContext環境.


    session?????????????? 同一個HTTP session共享一個Bean,不同HTTP session使用不同的Bean,該作用域僅適用于webApplicationContext環境.


    globalSession?? 同一個全局session共享一個Bean,一般用于portlet應用環境,該作用域僅適用于webApplicationContext環境.

    在低版本的spring中,由于只有兩個Bean作用域,所以采用singleton="true|false"的配置方式,spring2.0為了向后兼容,依舊支持這種配置方式.不過,spring2.0推薦采用新的配置方式:scope="<作用域類型>"

    -------------------------------------------------

    singleton作用域


    spring以容器的方式提供天然的單實例模式功能,任何POJO無須編寫特殊的代碼僅通過配置就可以了.

    注意:spring將Bean的默認作用域定為singleton.

    singleton例:

    <bean id="car" class="com.baobaotao.scope.Car" scope="singleton"/>

    <bean id="boss1" class="com.baobaotao.scope.Boss">

    <property name="car" ref="car"/>

    </bean>

    Car Bean聲明為singleton(因為默認是singleton,所以可以不顯式指定).

    在默認情況下,spring的ApplicationContext容器在啟動時,自動實例化所有singleton的Bean并緩存于容器中.

    雖然啟動時會花費一些時間,但帶來兩個好處:首先對Bean提前的實例化操作會及早發現一些潛在的配置問題.

    其次Bean以緩存的方式保存,當運行時使用到該Bean時就無須再實例化了,加快了運行效率.如果用戶不希望在容

    器啟動時提前實例化singleton的Bean,可以通過lazy-init屬性進行控制:

    <bean id="boos1" class="com.baobaotao.scope.Boss" lazy-init="true">

    <property name="car" ref="car"/>

    </bean>

    lazy-init="true"的Bean在某些情況下依舊會提前實例化:如果該Bean被其它需要提前實例化的Bean引用到,

    spring也將忽略延遲實例化的設置.

    -------------------------------------------------

    prototype作用域

    采用scope="prototype"指定非單實例作用域Bean,請看:

    <bean id="car" class="com.baobaotao.scope.Car" scope="prototype"/>

    <bean id="boss1" class="com.baobaotao.scope.Boss">

    <property name="car" ref="car"/>

    </bean>

    <bean id="boss2" class="com.baobaotao.scope.Boss">

    <property name="car" ref="car"/>

    </bean>

    boss1,boss2所引用的都是一個獨立的Car實例.

    在默認情況下,spring容器在啟動時不實例化prototype的Bean.此外,spring容器將prototype的Bean交給調用

    者后,就不再管理它的生命周期.

    -------------------------------------------------

    web應用環境相關的Bean作用域

    如果用戶使用spring的webApplicationContext,則可以使用另外3種Bean的作用域:request,session和globalSession.不過

    在使用這些作用域之前,首先必須在web容器中進行一些額外的配置,在高版本的web容器中,則可以利用HTTP請求監聽器進行配置:

    <web-app>

    ...

    <listener>

    <listener-class>

    org.springframework.web.context.request.RequestContextListener

    </listener-class>

    </listener>

    ...

    </web-app>

    細心的朋友可能有一個疑問:在介紹webApplicationContext初始化時,我們已經通過ContextLoaderListener將web容器與

    spring容器整合,為什么這里又要引入一個額外的RequestContextListener以支持Bean的另外3個作用域呢?

    在整合spring容器時使用ContextLoaderListener,它實現了ServletContextListener監聽器接口,ServletContextListener

    只負責監聽web容器啟動和關閉的事件.而RequestContextListener實現ServletRequestListener監聽器接口,該監聽器監聽

    HTTP請求事件,web服務器接收的每一次請求都會通知該監聽器.

    spring容器啟動和關閉操作由web容器的啟動和關閉事件觸發,但如果spring容器中的Bean需要request,session,globalsession

    作用域的支持,spring容器本身就必須獲得web容器的HTTP請求事件,以HTTP請求的事件"驅動"Bean作用域的控制邏輯.

    request作用域

    顧名思義,request作用域的Bean對應一個HTTP請求和生命周期,考慮下面的配置:

    <bean name="car" class="com.baobaotao.scope.Car" scope="request"/>

    這樣,每次HTTP請求調用到car Bean時,spring容器創建一個新的Car Bean,請求處理完畢后,銷毀這個Bean.

    session作用域

    假設將以上car的作用域調整為session類型:

    <bean name="car" class="com.baobaotao.scope.Car" scope="session"/>

    這樣配置后,car Bean的作用域橫跨整個HTTP session,session中所有HTTP請求都共享同一個Car Bean,當HTTP Session結束后,實例

    才被銷毀.

    globalSession作用域

    下面的配置片斷將car的作用域設置為了globalSession:

    <bean name="loginController" class="com.baobaotao.scope.Car" scope="globalSession"/>

    globalSession作用域類似于session作用域,不過僅在portlet的web應用中使用.Portlet規范定義了全局Session概念,它被組成portlet

    web應用的所有子portlet共享.如果不在Portlet web應用環境下,globalSession自然等價于session作有域了.

    posted on 2009-08-31 14:48 jadmin 閱讀(147) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产一卡二卡四卡免费| 免费一级e一片在线播放| 嫩草影院免费观看| 亚洲熟妇av一区二区三区| 亚洲国产精品99久久久久久| 99re6在线视频精品免费下载| 亚洲精品偷拍视频免费观看 | 亚洲蜜芽在线精品一区| 免费看少妇高潮成人片| 久久亚洲私人国产精品vA| 黄视频在线观看免费| 亚洲性猛交XXXX| 亚洲国产精品自产在线播放| 四虎成人精品国产永久免费无码| 情侣视频精品免费的国产| 理论片在线观看免费| 亚洲阿v天堂在线| 亚洲成a人片在线观看天堂无码 | 182tv免费视视频线路一二三| 亚洲精品视频在线播放| 女性无套免费网站在线看| 日本一区二区三区免费高清| 久久亚洲国产最新网站| 免费在线看片网站| 亚洲一区二区三区自拍公司| 精品亚洲成α人无码成α在线观看| 中文字幕免费视频一| 免费的黄网站男人的天堂 | 亚洲免费日韩无码系列| 在线亚洲午夜片AV大片| 最近的免费中文字幕视频| 四虎影视永久在线精品免费| 最近中文字幕免费大全| 国产青草亚洲香蕉精品久久| 亚洲综合国产精品| 日本免费精品一区二区三区| 最近中文字幕完整免费视频ww| 日本xxwwxxww在线视频免费| 国产亚洲精品福利在线无卡一| 免费a级毛片永久免费| 亚洲妓女综合网99|