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

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

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

Spring bean配置單例或多例模式

單例

spring bean 默認是單例默認,在對應.xml文件中的配置是:

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

singleton就是配置這個bean是否是單例的,如果不寫,就是默認值true。

單例模式:每個bean定義只生成一個對象實例,每次getBean請求獲得的都是此實例

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

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

多例

配置多例:

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

多例模式:任何一個實例都是新的實例,調用getBean時,就new一個新實例

Spring scope配置單例、多例模式

1、scope屬性介紹

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

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

    當時導入包spring-mvc和包spring-mvc-portlet可以使用下列值(web應用):

    • request:當每次請求時實例化。
    • session:當在一個session周期內,對象時單例的。
    • globalSession:依賴包spring-mvc-portlet,類似于session.
    • application:在一個application對象內是單例的。
    • singleton:默認值,單例模式;
    • prototype:多例,每次獲取對象都會重新實例化;

    所需包:

    在這里插入圖片描述

    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、單例模式底層實現(xiàn)模擬

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

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

    1、提升運行效率;

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

    懶漢式的缺點是:使用了多線程鎖機制,導致效率低。

    實現(xiàn):

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

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

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

    3.3、測試方法:

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

    以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

    相關文章

    • JavaWeb開發(fā)入門第二篇Tomcat服務器配置講解

      JavaWeb開發(fā)入門第二篇Tomcat服務器配置講解

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

      restTemplate超時處理的策略方案

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

      Java編程發(fā)展歷史(動力節(jié)點Java學院整理)

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

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

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

      springMarchal集成xStream的完整示例代碼

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

      Idea servlet映射方法優(yōu)缺點對比

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

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

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

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

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

      MybatisPlus3.3.0沒有MybatisPlusInterceptor類問題的解決方法

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

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

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

    最新評論

    北川| 镇雄县| 上饶县| 乌苏市| 射阳县| 南和县| 南宁市| 宽甸| 宜都市| 伊宁市| 明光市| 百色市| 乌鲁木齐县| 金平| 鄂伦春自治旗| 荣成市| 星子县| 景德镇市| 石狮市| 吉安市| 那坡县| 平遥县| 交口县| 乐昌市| 东莞市| 绍兴市| 深州市| 澎湖县| 马边| 乐陵市| 沈阳市| 鄢陵县| 太谷县| 深圳市| 万源市| 龙南县| 蓝田县| 霞浦县| 拜城县| 安福县| 休宁县|