SpringMVC。如果我想让不同的 bean 也装配不同的 component 应该怎么做? 配置大概是这样:
<!--Listener-->
<bean id="MyListener" class="com.example.MyListener" scope="prototype"/>
简化的例子
// MyListener.java
@Aync
public class MyListener implements ApplicationListener<MyEvent> {
@Autowired
private MyExecutor myExecutor;
private String listenerId;
@Override
public void onApplicationEvent(MyEvent myEvent) {
this.listenerId = myEvent.getId();
this.myExecutor.setId(myEvent.getId()); // sleep 5s
System.out.println(this.listenerId);
}
}
// MyExecutor.java
@Component
public class MyExecutor {
private String exeId;
public void setId(Stirng id) {
this.exeId = id;
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
System.out.println(this.exeId);
}
}
如果在 5 秒内连发两个 ID 不同的 Event,那么会看到 Event 由不同的 Listener 处理,但是执行了相同的 myExecutor。
也试过增加这个配置,不行。
<!--Executor-->
<bean id="MyExecutor" class="com.example.MyExecutor" scope="prototype"/>
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.