7

我遇到了如下场景:

MyBean - 在 XML 配置中定义。

我需要将 MyBean 注入多个线程。但我的要求是:1)在两个不同线程中检索到的引用应该不同 2)但无论我从单线程检索 bean 多少次,我都应该得到相同的引用。

例如:

Thread1 {

    run() {
        MyBean obj1 = ctx.getBean("MyBean");
        ......
        ......
        MyBean obj2 = ctx.getBean("MyBean");
    }
}

Thread2 {

    run(){
        MyBean obj3 = ctx.getBean("MyBean");
    }
}

所以基本上obj1 == obj2但是obj1 != obj3

4

2 回答 2

10
于 2013-02-04T14:56:44.677 回答
2

您需要的是一个新的Thread Local 自定义范围。您可以实现自己的,也可以使用此处的

Custom Thread Scope 模块是用于提供线程范围 bean 的自定义范围实现。每个对 bean 的请求都会为同一个线程返回同一个实例。

于 2013-02-04T14:56:35.793 回答