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

Spring Bean六種作用域的適用場景和使用方式

 更新時間:2023年07月27日 14:56:47   作者:手插口袋誰也不愛?  
本文主要介紹了Spring Bean六種作用域的適用場景和使用方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

主要對單例作用域與原型作用域進行重點說明,其余四個了解即可

單例(Singleton)作用域:

單例作用域一般是默認的Bean作用域。Spring容器在第一次獲取Bean時創(chuàng)建實例,并在后續(xù)請求中返回同一個實例。

例如:我們現(xiàn)在創(chuàng)建一個公共的Bean供用戶一與用戶二使用,用戶一再使用完后對其內(nèi)容進行修改,后被用戶二使用,查看Bean是否改變,即可查看Bean的作用域。

公共的Bean:

@Component
public class Users {
   private User user;
    @Bean
    public User user1(){
       user= new User(1);
       user.setName("zcx");
       return user;
    }
}

用戶一使用時進行修改操作:

@Controller
public class BeanScopesController {
    @Autowired
    private User user;
    public  User getUser(){
        User user1 = user;
        System.out.println(user1.toString()+"這是修改之前的");
        user1.setName("java");
        return  user1;
    }
}

用戶二再去使用Bean:

@Controller
public class BeanScopesController2 {
    @Autowired
    private User user2;
    public  User getUser2(){
        User user = user2;
        return user;
    }
}

打印用戶一與用戶二共用Bean的值:

public class demo {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
            BeanScopesController beanScopesController = context.getBean(BeanScopesController.class);
        System.out.println(beanScopesController.getUser().toString()+"這是第一個調(diào)用對象修改之后的");
        BeanScopesController2 beanScopesController2 = context.getBean(BeanScopesController2.class);
        System.out.println(beanScopesController2.getUser2().toString()+"這是第二個對象調(diào)用之后的");
    }
}

進行結(jié)果打?。?/p>

通過結(jié)果我們發(fā)現(xiàn)用戶一修改過的值在用戶二中也出現(xiàn)了,已經(jīng)不是初始的值了。所以說明Bean 默認情況下是單例狀態(tài)(singleton),也就是所有用戶的使?的都是同?個對象。

原型(Prototype)作用域:

每次對該作?域下的Bean的請求都會創(chuàng)建新的實例:獲取Bean(即通過applicationContext.getBean等?法獲?。┘把b配Bean(即通過@Autowired注?)都是新的對象實例

可以使? @Scope 標簽?來修改Bean 的作?域,例如:

@Component
public class Users {
   private User user;
   @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    @Bean
    public User user1(){
       user= new User(1);
       user.setName("zcx");
       return user;
    }
}

通過跟前面一樣的代碼打印結(jié)果如下:

通過結(jié)果我們知道Bean的作用域已經(jīng)由單例模式修改為原型模式也就是多例模式當(dāng)然@Scope 標簽有兩種設(shè)置?式:

  • 直接設(shè)置值:@Scope(“prototype”)
  • 使用枚舉設(shè)置:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 請求(Request)作用域:

每次http請求會創(chuàng)建新的Bean實例,類似于prototype,?次http的請求和響應(yīng)的共享Bean,限定SpringMVC中使用

會話(Session)作用域:

在?個http session中,定義?個Bean實例,?戶回話的共享Bean,限定SpringMVC中使?

全局(application)作用域:

在?個http servlet Context中,定義?個Bean實例,使用于Web應(yīng)?的上下?信息,限定SpringMVC中使?

HTTP WebSocket 作用域

在?個HTTP WebSocket的?命周期中,定義?個Bean實例,WebSocket的每次會話中,保存了?個Map結(jié)構(gòu)的頭信息,將?來包裹客戶端消息頭。第?次初始化后,直到WebSocket結(jié)束都是同?個Bean,限定Spring WebSocket中使?

 到此這篇關(guān)于Spring Bean六種作用域的適用場景和使用方式的文章就介紹到這了,更多相關(guān)Spring Bean 作用域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的異步操作CompletableFuture示例詳解

    Java中的異步操作CompletableFuture示例詳解

    CompletableFuture是Java8引入的異步編程工具,支持非阻塞的鏈式調(diào)用和組合操作,提供了強大的異步任務(wù)編排能力,本文通過實例代碼講解Java中的異步操作CompletableFuture,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • Java實現(xiàn)自動化合并與拆分PowerPoint表格單元格

    Java實現(xiàn)自動化合并與拆分PowerPoint表格單元格

    通過 Spire.Presentation for Java,我們可以利用代碼精準地控制表格的每一個角落,本文將詳細介紹如何在 Java 后端實現(xiàn) PPT 表格的合并與拆分操作,需要的可以了解下
    2026-02-02
  • java web中對json的使用詳解

    java web中對json的使用詳解

    在Java Web的開發(fā)過程中,如果希望調(diào)用Java對象轉(zhuǎn)化成JSON對象等操作,我們需要引入相關(guān)jar包,下面小編給大家?guī)砹薺ava web中對json的使用,一起看看吧
    2018-08-08
  • Java中把一個文件夾下的所有文件復(fù)制到另一個文件夾的完整實現(xiàn)方案

    Java中把一個文件夾下的所有文件復(fù)制到另一個文件夾的完整實現(xiàn)方案

    這篇文章主要介紹了如何使用Java原生API實現(xiàn)文件夾復(fù)制,支持多級目錄、空文件夾和文件覆蓋等場景,并提供了基于File和FileChannel的實現(xiàn)方案,此外,還介紹了使用Java 7的Files工具類進行簡化實現(xiàn),需要的朋友可以參考下
    2026-01-01
  • Java實現(xiàn)數(shù)組去除重復(fù)數(shù)據(jù)的方法詳解

    Java實現(xiàn)數(shù)組去除重復(fù)數(shù)據(jù)的方法詳解

    這篇文章主要介紹了Java實現(xiàn)數(shù)組去除重復(fù)數(shù)據(jù)的方法,結(jié)合實例形式詳細分析了java數(shù)組去除重復(fù)的幾種常用方法、實現(xiàn)原理與相關(guān)注意事項,需要的朋友可以參考下
    2017-09-09
  • 基于SpringMVC攔截器實現(xiàn)接口耗時監(jiān)控功能

    基于SpringMVC攔截器實現(xiàn)接口耗時監(jiān)控功能

    本文呢主要介紹了基于SpringMVC攔截器實現(xiàn)的接口耗時監(jiān)控功能,統(tǒng)計接口的耗時情況屬于一個可以復(fù)用的功能點,因此這里直接使用 SpringMVC的HandlerInterceptor攔截器來實現(xiàn),需要的朋友可以參考下
    2024-02-02
  • Java解析XML和JSON的重要方法

    Java解析XML和JSON的重要方法

    這篇文章主要為大家詳細介紹了Java解析XML和JSON的幾種重要方法,文中的示例代碼講解詳細,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2025-11-11
  • IDEA如何對多線程進行debug的示例詳解

    IDEA如何對多線程進行debug的示例詳解

    開發(fā)中使用到多線程的時候不少,但是debug起來還是比較困難的,因為默認每次只會進入一個線程,這樣有些問題是發(fā)現(xiàn)不了的,其實IDEA也是支持進入每個線程來debug的,本文給大家介紹了IDEA如何對多線程進行debug的示例,需要的朋友可以參考下
    2024-05-05
  • spring為java.util.Properties類型的屬性進行賦值過程解析

    spring為java.util.Properties類型的屬性進行賦值過程解析

    這篇文章主要介紹了spring為java.util.Properties類型的屬性進行賦值過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • MyBatisPlus分頁的同時指定排序規(guī)則說明

    MyBatisPlus分頁的同時指定排序規(guī)則說明

    這篇文章主要介紹了MyBatisPlus分頁的同時指定排序規(guī)則說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論

枣阳市| 蛟河市| 江华| 大冶市| 东乌| 呼玛县| 哈尔滨市| 浑源县| 玛纳斯县| 锡林郭勒盟| 嘉峪关市| 商洛市| 崇文区| 平泉县| 东港市| 宣城市| 商洛市| 衢州市| 那曲县| 北票市| 玉林市| 荃湾区| 阿拉善左旗| 河曲县| 修武县| 峨眉山市| 轮台县| 信阳市| 翼城县| 阿尔山市| 黎平县| 利川市| 蒲江县| 平武县| 河东区| 鸡东县| 洪泽县| 榕江县| 牙克石市| 高州市| 温宿县|