亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

單例(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)由單例模式修改為原型模式也就是多例模式當然@Scope 標簽有兩種設置?式:

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

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

會話(Session)作用域:

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

全局(application)作用域:

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

HTTP WebSocket 作用域

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

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

相關文章

  • 使用 Spring Boot 內(nèi)嵌容器 Undertow創(chuàng)建服務器的方法

    使用 Spring Boot 內(nèi)嵌容器 Undertow創(chuàng)建服務器的方法

    Undertow是一個非常輕量并高性能的web server,它來自 JBoss。支持blocking和non-blocking兩種NIO API。接下來通過本文給大家介紹使用Spring Boot 內(nèi)嵌容器 Undertow創(chuàng)建服務器的方法,感興趣的朋友一起看看吧
    2017-11-11
  • Java程序中添加播放MIDI音樂功能的實現(xiàn)方法詳解

    Java程序中添加播放MIDI音樂功能的實現(xiàn)方法詳解

    本篇文章是對在Java程序中添加播放MIDI音樂功能的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • Java基礎知識精通塊作用域與條件及switch語句

    Java基礎知識精通塊作用域與條件及switch語句

    塊(block,即復合語句)是指由若干條 Java 語句組成的語句,并由一對大括號括起來。塊確定了變量的作用域。一個塊可以嵌套在另一個塊中;條件語句、switch語句是我們常見會用到的結(jié)構,感興趣的朋友來看看吧
    2022-04-04
  • Spring Boot2中如何優(yōu)雅地個性化定制Jackson實現(xiàn)示例

    Spring Boot2中如何優(yōu)雅地個性化定制Jackson實現(xiàn)示例

    這篇文章主要為大家介紹了Spring Boot2中如何優(yōu)雅地個性化定制Jackson實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • macbook中springboot的jmeter壓測示例

    macbook中springboot的jmeter壓測示例

    這篇文章主要介紹了macbook中springboot的jmeter壓測示例詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • Spring中ThreadLocal的解析

    Spring中ThreadLocal的解析

    這篇文章主要介紹了Spring中ThreadLocal的解析,Spring通過各種DAO模板類降低了開發(fā)者使用各種數(shù)據(jù)持久技術的難度。這些模板類都是線程安全的,也就是說,多個DAO可以復用同一個模板實例而不會發(fā)生沖突,下面一起進入文章學子詳細內(nèi)容吧
    2022-01-01
  • java多線程實現(xiàn)下載圖片并壓縮

    java多線程實現(xiàn)下載圖片并壓縮

    這篇文章主要為大家詳細介紹了java多線程實現(xiàn)下載圖片并壓縮,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 2020新版idea創(chuàng)建項目沒有javaEE 沒有Web選項的完美解決方法

    2020新版idea創(chuàng)建項目沒有javaEE 沒有Web選項的完美解決方法

    這篇文章主要介紹了2020新版idea創(chuàng)建項目沒有javaEE 沒有Web選項的完美解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • JAVA中單元測試的常用方式(小結(jié))

    JAVA中單元測試的常用方式(小結(jié))

    這篇文章主要介紹了JAVA中單元測試的常用方式(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • 詳解Spring中InitializingBean接口的功能

    詳解Spring中InitializingBean接口的功能

    這篇文章主要介紹了Spring中InitializingBean接口的功能,講述了spring中InitializingBean接口的功能簡介說明,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05

最新評論