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"/> 