最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?bean配置單例或多例模式方式

 更新時(shí)間:2022年01月19日 14:48:58   作者:鼓浪嶼島與海  
這篇文章主要介紹了Spring?bean配置單例或多例模式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Spring bean配置單例或多例模式

單例

spring bean 默認(rèn)是單例默認(rèn),在對(duì)應(yīng).xml文件中的配置是:

<bean id="user" class="..." scope="singleton"/>

singleton就是配置這個(gè)bean是否是單例的,如果不寫(xiě),就是默認(rèn)值true。

單例模式:每個(gè)bean定義只生成一個(gè)對(duì)象實(shí)例,每次getBean請(qǐng)求獲得的都是此實(shí)例

單例模式分為餓漢模式和懶漢模式, 

餓漢模式spring singleton的缺省是餓漢模式:啟動(dòng)容器時(shí)(即實(shí)例化容器時(shí)),為所有spring配置文件中定義的bean都生成一個(gè)實(shí)例
懶漢模式在第一個(gè)請(qǐng)求時(shí)才生成一個(gè)實(shí)例,以后的請(qǐng)求都調(diào)用這個(gè)實(shí)例spring singleton設(shè)置為懶漢模式:<beansdefault-lazy-init="true">

多例

配置多例:

<bean id="user" class="..." scope="prototype"/>

多例模式:任何一個(gè)實(shí)例都是新的實(shí)例,調(diào)用getBean時(shí),就new一個(gè)新實(shí)例

Spring scope配置單例、多例模式

1、scope屬性介紹

scope="“是標(biāo)簽的一個(gè)屬性,作用是:控制對(duì)象的作用范圍(單例、多例模式)

取值:scope=”"是標(biāo)簽的一個(gè)屬性,作用是:控制對(duì)象的作用范圍(單例、多例模式)

    當(dāng)時(shí)導(dǎo)入包spring-mvc和包spring-mvc-portlet可以使用下列值(web應(yīng)用):

    • request:當(dāng)每次請(qǐng)求時(shí)實(shí)例化。
    • session:當(dāng)在一個(gè)session周期內(nèi),對(duì)象時(shí)單例的。
    • globalSession:依賴(lài)包spring-mvc-portlet,類(lèi)似于session.
    • application:在一個(gè)application對(duì)象內(nèi)是單例的。
    • singleton:默認(rèn)值,單例模式;
    • prototype:多例,每次獲取對(duì)象都會(huì)重新實(shí)例化;

    所需包:

    在這里插入圖片描述

    2、scope配置

    Application.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
        <bean id="user" class="Model.User" scope="singleton">
            <aop:scoped-proxy/>
        </bean>
    </beans>
    

    3、單例模式底層實(shí)現(xiàn)模擬

    3.1、 模擬單例模式 — 懶漢式

    **懶漢式的優(yōu)點(diǎn)是:**

    1、提升運(yùn)行效率;

    2、實(shí)現(xiàn)數(shù)據(jù)共享,例如application對(duì)象,application對(duì)象單例模式,在程序啟動(dòng),對(duì)象實(shí)例化之后,程序結(jié)束之前,實(shí)例化的對(duì)象都可以實(shí)現(xiàn)共享。

    懶漢式的缺點(diǎn)是:使用了多線程鎖機(jī)制,導(dǎo)致效率低。

    實(shí)現(xiàn):

    package SingleTon;
    public class SingleTon {
        private static SingleTon singleTon;
        /**
         * 創(chuàng)建對(duì)象一般都是用new XX(),此處XX()是類(lèi)對(duì)象的無(wú)參構(gòu)造方法
         * 一般無(wú)參構(gòu)造方法都public XX(){},但是單例模式使用private修飾構(gòu)造方法,
         * 這樣是為了不讓其它類(lèi)創(chuàng)建單例對(duì)象。
         *
         * 構(gòu)造方法的兩個(gè)條件:方法名與類(lèi)名相同,沒(méi)有返回值
         */
        private SingleTon(){
        }
        /**
         * 實(shí)例方法,使用實(shí)例方法創(chuàng)建對(duì)象,
         * 因?yàn)閷?shí)例方法需要對(duì)象才能調(diào)用,然而構(gòu)造方法時(shí)private修飾的,其他類(lèi)不能使用,
         * 因此實(shí)例方法應(yīng)該是靜態(tài)的(static),使用public修飾,其他類(lèi)可以使用,返回值要是類(lèi)對(duì)象.
         *
         */
        public static SingleTon getInstance(){
            /**
             * 判斷對(duì)象是否已經(jīng)被創(chuàng)建,要有一個(gè)全局的類(lèi)類(lèi)型的參數(shù)
             * 靜態(tài)方法不能使用非靜態(tài)的變量,因此變量應(yīng)該設(shè)置成靜態(tài)的(static)
             */
            if(singleTon == null){
                /**
                 * 如果是多線程的,此處需要使用鎖,所對(duì)象使用該類(lèi)對(duì)象
                 * 例如:同時(shí)兩個(gè)線程使用該對(duì)象,該對(duì)象還為實(shí)例化,此處如果不使用鎖就會(huì)導(dǎo)致對(duì)象被重復(fù)實(shí)例化,不符合單例模式
                 */
                synchronized(SingleTon.class){
                    /**
                     * 雙重驗(yàn)證,防止多線程重復(fù)實(shí)例化對(duì)象
                     *
                     * 使用鎖缺點(diǎn):效率較低。
                     */
                    if(singleTon == null){
                        new SingleTon();
                    }
                }
            }
            return singleTon;
        }
    }
    

    3.2、餓漢式:優(yōu)點(diǎn)是解決了懶漢式效率低的缺點(diǎn)。

    package SingleTon;
    /***
     * 單例模式 -- 餓漢式
     */
    public class SingleTon2 {
        /**
         * 餓漢式構(gòu)造方法、全局變量、實(shí)例方法都與懶漢式一樣,區(qū)別在于餓漢式在全局變量處就已經(jīng)實(shí)例化了對(duì)象
         * 餓漢式不用考慮多線程問(wèn)題,解決了懶漢式效率低的問(wèn)題。
         */
        private static SingleTon2 singleTon2 = new SingleTon2();
        /**
         * 構(gòu)造方法
         */
        private SingleTon2(){}
        /**
         * 實(shí)例方法
         */
        public static SingleTon2 getInstance(){
            return singleTon2;
        }
    }
    

    3.3、測(cè)試方法:

    package SingleTon;
    public class Test {
        public static void main(String[] args) {
            SingleTon singleTon = SingleTon.getInstance();
            System.out.println(singleTon);
        }
    }
    

    以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

    相關(guān)文章

    • JavaWeb開(kāi)發(fā)入門(mén)第二篇Tomcat服務(wù)器配置講解

      JavaWeb開(kāi)發(fā)入門(mén)第二篇Tomcat服務(wù)器配置講解

      JavaWeb開(kāi)發(fā)入門(mén)第二篇主要介紹了Tomcat服務(wù)器配置的方法教大家如何使用Tomcat服務(wù)器,感興趣的小伙伴們可以參考一下
      2016-04-04
    • restTemplate超時(shí)處理的策略方案

      restTemplate超時(shí)處理的策略方案

      這篇文章主要為大家介紹了restTemplate超時(shí)處理的策略方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
      2022-06-06
    • Java編程發(fā)展歷史(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

      Java編程發(fā)展歷史(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)

      Java的歷史可以追溯到1991年4月,Sun公司的James Gosling領(lǐng)導(dǎo)的綠色計(jì)劃(Green Project)開(kāi)始著力發(fā)展一種分布式系統(tǒng)結(jié)構(gòu),使其能夠在各種消費(fèi)性電子產(chǎn)品上運(yùn)行,他們使用了C/C++/Oak語(yǔ)言。由于多種原因,綠色計(jì)劃逐漸陷于停滯狀態(tài)
      2017-03-03
    • 淺談Thread.sleep()為什么要拋出中斷異常

      淺談Thread.sleep()為什么要拋出中斷異常

      本文主要介紹了淺談Thread.sleep()為什么要拋出中斷異常,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
      2023-04-04
    • springMarchal集成xStream的完整示例代碼

      springMarchal集成xStream的完整示例代碼

      這篇文章主要介紹了springMarchal集成xStream的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
      2022-03-03
    • Idea servlet映射方法優(yōu)缺點(diǎn)對(duì)比

      Idea servlet映射方法優(yōu)缺點(diǎn)對(duì)比

      這篇文章主要介紹了Idea servlet映射方法優(yōu)缺點(diǎn)對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
      2020-11-11
    • SpringBoot中Elasticsearch的連接配置原理與使用詳解

      SpringBoot中Elasticsearch的連接配置原理與使用詳解

      Elasticsearch是一種開(kāi)源的分布式搜索和數(shù)據(jù)分析引擎,它可用于全文搜索、結(jié)構(gòu)化搜索、分析等應(yīng)用場(chǎng)景,本文主要介紹了SpringBoot中Elasticsearch的連接配置原理與使用詳解,感興趣的可以了解一下
      2023-09-09
    • java 實(shí)現(xiàn)雙向鏈表實(shí)例詳解

      java 實(shí)現(xiàn)雙向鏈表實(shí)例詳解

      這篇文章主要介紹了java 實(shí)現(xiàn)雙向鏈表實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
      2017-03-03
    • MybatisPlus3.3.0沒(méi)有MybatisPlusInterceptor類(lèi)問(wèn)題的解決方法

      MybatisPlus3.3.0沒(méi)有MybatisPlusInterceptor類(lèi)問(wèn)題的解決方法

      項(xiàng)目使用的是mybatis-plus-extension3.3.0依賴(lài),然后在我使用分頁(yè)插件的時(shí)候,發(fā)現(xiàn)無(wú)法導(dǎo)入MybatisPlusInterceptor類(lèi)所以本文給大家介紹了MybatisPlus3.3.0沒(méi)有MybatisPlusInterceptor類(lèi)問(wèn)題的解決方法,需要的朋友可以參考下
      2023-12-12
    • java實(shí)現(xiàn)數(shù)字猜拳小游戲

      java實(shí)現(xiàn)數(shù)字猜拳小游戲

      這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)數(shù)字猜拳的小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
      2019-06-06

    最新評(píng)論

    景洪市| 托里县| 恩平市| 肃宁县| 东乡族自治县| 抚顺县| 宁安市| 建昌县| 左云县| 三都| 旬阳县| 阿图什市| 清徐县| 巫山县| 河池市| 广元市| 托克逊县| 常德市| 嫩江县| 瑞丽市| 湘乡市| 龙井市| 佛学| 新龙县| 吉水县| 苏尼特左旗| 高平市| 广州市| 鸡泽县| 太康县| 千阳县| 苍山县| 米泉市| 闽侯县| 华池县| 东至县| 黔西县| 榆社县| 讷河市| 兴山县| 衡阳市|