簡體   English   中英

Spring Boot - Web 應用程序上下文 Bean 范圍

[英]Spring Boot - Web Application Context Bean Scope

我有一個A類作為 bean。

public class A
{
   // constructors
   // properties
   // getters and setters
}

Spring啟動配置:

@Configuration
public class AConfig{
    @Bean
    @Scope(scopeName = WebApplicationContext.SCOPE_APPLICATION, proxyMode = ScopedProxyMode.TARGET_CLASS)
    public A getA() {
        return new A();
    }   
}

我現在正在使用 WebSocket,我正在嘗試為某些特定的 WebSocket 通道獲取一個新的 A 類實例,假設我使用的是 WebSocket id:1那么我將擁有該 WebSocket 的 A(某個地址)的實例,對於 WebSocket id:2我將有另一個 A 實例(其他一些地址),我可以在整個應用程序中使用它。 我怎樣才能做到這一點? 在這種情況下,我想我必須向服務器發送一些 ID 來識別我正在尋找的 spring bean。

**我們應該使用構造函數參數而不是自動裝配來使其松散耦合**

class MessageSocketDemo {

private A a;

public MessageSocketDemo(A a) {
    this.a = a;
}

public MessageSocketDemo() {
    a = new A("address");
}

}

class A {
String address;

public A(String add) {
    address = add;
}

}

所以當你創建 MessageSocketDemo 的對象時,你每次 new 都會創建 A 的對象。 或者將 A 的范圍作為原型或請求,每次被詢問時都會創建新的,以及創建 A 實例的查找方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM