为什么不同的 bean 会装配到同一个 component ?

2018-04-12 12:36:57 +08:00
 lxy

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"/>
1384 次点击
所在节点    Java
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/446194

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX