Spring 引导 - Web 应用程序上下文 Bean 范围

Spring Boot - Web Application Context Bean Scope

我有一个 class A 作为豆子。

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,我正在尝试获取一个新的 class 某些特定 WebSocket 通道的实例,假设我正在使用 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 的对象时,每次新建时都会创建 A 的对象。 或者将 A 的范围作为原型或请求,每次被询问时都会创建新的,以及创建 A

实例的查找方法