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

问题描述 投票:1回答:1

我有一个类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,那么我将拥有一个A(某个地址)的实例WebSocket,对于WebSocket id:2,我将拥有A的另一个实例(其他地址),并且可以在整个应用程序中使用它。我该如何实现?在这种情况下,我想我必须向服务器发送一些ID以标识我要查找的spring bean。

java spring spring-boot websocket javabeans
1个回答
0
投票

**代替自动装配,我们应该使用构造函数参数使其松散耦合**

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的实例

© www.soinside.com 2019 - 2024. All rights reserved.