Java 一个bean的多个实例

Java 一个bean的多个实例,java,spring,listener,Java,Spring,Listener,我正在实现一个侦听器类,它侦听一些事件,然后处理它们。如果此事件的处理进展顺利,则不会再次通知此事件,但如果发生任何异常事件,则会在一段时间后再次通知MyBeanImplementation类,它可以再次尝试处理它 以下代码工作正常,但由于此事件处理可能需要一些时间, 1.我想要多个侦听器 2.限制调用服务的次数,可能正在使用threadpool 如何让多个侦听器以不同方式处理每个事件?我是春天的新手,不知道这是否可能 以下是一个例子: //弹簧配置: <bean id="MyBean"

我正在实现一个侦听器类,它侦听一些事件,然后处理它们。如果此事件的处理进展顺利,则不会再次通知此事件,但如果发生任何异常事件,则会在一段时间后再次通知MyBeanImplementation类,它可以再次尝试处理它

以下代码工作正常,但由于此事件处理可能需要一些时间,
1.我想要多个侦听器
2.限制调用服务的次数,可能正在使用threadpool

如何让多个侦听器以不同方式处理每个事件?我是春天的新手,不知道这是否可能

以下是一个例子:

//弹簧配置:

<bean id="MyBean" class="MyBeanImplementation">

谢谢

基本上,您可以使用介绍不同的听众,他们以不同的方式对共享事件进行重新处理

<bean id="strategy1Listener" />
<bean id="strategy2Listener" />
<bean id="strategy3Listener" />

然后,您可以引入一个复合侦听器来迭代其他侦听器并传递事件,并允许它们处理事件:

<bean id="compositeStrategyListener">
  <property name="listeners">
    <list>
      <ref bean="strategy1Listener" />
      <ref bean="strategy2Listener" />
      <ref bean="strategy3Listener" />
    </list>
  </property>
</bean>

另一方面,您有一个生成/发布事件的对象:

<bean id="eventGenerator">
  <property name="eventListener" ref="compositeStrategyListener" />
</bean>

因此,现在
eventGenerator
将生成的事件发布到一个
compositeStrategyListner
中,该列表迭代它拥有的侦听器,并允许它们以自己不同的方式处理事件


您还可以利用配置如何运行事件处理任务。

为什么不将google guava eventbus库与spring一起使用?它将处理收听活动所需的一切。

谢谢nobeh。在我的例子中,您的第一种方法不起作用,因为不需要使用不同的事件侦听器实现。但在我的用例中,使用Spring任务执行的第二种方法似乎很好。我将尝试任务执行器,看看它是否适合我。
<bean id="eventGenerator">
  <property name="eventListener" ref="compositeStrategyListener" />
</bean>