Spring Boot - область применения контекста веб-приложения - PullRequest
1 голос
/ 27 января 2020

У меня есть класс A в качестве компонента.

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

Конфигурация весенней загрузки:

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

Я сейчас работаю с WebSocket и пытаюсь получить новый экземпляр класса A для некоторых определенных c каналов WebSocket, скажем, если я работаю с WebSocket id:1, тогда у меня будет экземпляр A (некоторый адрес) для этого WebSocket, а для WebSocket id:2 у меня будет другой экземпляр A (некоторый другой адрес), и я могу иметь его через приложение. Как я могу этого достичь? В этом случае, я полагаю, мне нужно отправить какой-то идентификатор на сервер, чтобы определить, какой пружинный компонент я ищу.

1 Ответ

0 голосов
/ 30 января 2020

** Вместо Autowired мы должны использовать аргументы конструктора, чтобы сделать его слабо связанным **

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 каждый раз, когда новый. Или создайте Scope of A в качестве прототипа или запроса, который будет создавать его каждый раз при запросе, и метод поиска для создания экземпляра A

...