gpt4 book ai didi

java - 原型(prototype)组件的 Spring 事件处理

转载 作者:行者123 更新时间:2023-11-30 08:45:17 26 4
gpt4 key购买 nike

假设我有两个组件 X 和 Y,其中 X 是单例而 Y 不是。

当我发布 XUpdateEvent 时,没有问题,我可以捕获事件。但是,对于 YUpdateEvent,我无法捕获事件。 Spring 为每个触发的事件创建新实例,而不是使用已经创建的实例。

那么,我是否需要编写一个自定义范围?或者 EventListener 有设置?

举例说明:

@Component
public class X{
@EventListener
public void onUpdate(XUpdateEvent event){
// fine.
}
}

@Component
@Scope("prototype")
public class Y{
@EventListener
public void onUpdate(YUpdateEvent event){
// calls new instance of Y for each event.
// Event should be fired for created instances.
}
}

最佳答案

Spring creates new instances for each fired event, not using the already created ones

这就是原型(prototype)作用域的意思。看看 docs .

The non-singleton, prototype scope of bean deployment results in the creation of a new bean instance every time a request for that specific bean is made.

如果您希望 Spring 重用您的 Y 实例,请将其声明为单例(即根本不定义 @Scope)

关于java - 原型(prototype)组件的 Spring 事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368341/

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