gpt4 book ai didi

java - 如何实例化 session 范围 bean 而不创建对它的引用?

转载 作者:行者123 更新时间:2023-12-02 05:48:57 24 4
gpt4 key购买 nike

我有一个 websocket 作用域 bean,每次创建新 session 时都会执行某些操作。问题是这个 bean 使用了一些可观察的处理程序,它不是直接调用的,所以这个 bean 永远不会被实例化。

如何实例化 websocket 作用域 bean,而不直接访问它?

最佳答案

我的解决方案:

创建一个接口(interface)以在要初始化的组件上使用:

public interface WebSocketSessionPrematureInitialization {
default void initialize() {}
}

创建一个组件来初始化所有实现该接口(interface)的组件:

@Component
@Scope(scopeName = "websocket", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class WebSocketBeanInitializer {

private final List<? extends WebSocketSessionPrematureInitialization> wsInit;

@Autowired
public WebSocketBeanInitializer(List<? extends WebSocketSessionPrematureInitialization> wsInit) {
this.wsInit = wsInit;
}

public void initialize() {
for (WebSocketSessionPrematureInitialization bean : wsInit)
bean.initialize();
}

}

现在您只需调用 WebSocketBeanInitializer 的initialize() 方法即可始终创建新 session 。

关于java - 如何实例化 session 范围 bean 而不创建对它的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56067563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com