Spring单例服务和原型方法查找注入

时间:2015-05-19 07:37:50

标签: java spring dependency-injection

我有一个单身服务类,如下所示:

@Service
public class SingletonClass {

    // the context is prototype scope
    private Context context;

    public void run(){
        context.setXyz();
    }

    public void runThis(){
        context.getXyz();
    }

    // setter,getter methods for context
}

如何使用查找方法注入以线程安全的方式实现此目的?

我想跨方法分享状态。获取每种方法的新上下文,并在后续方法中使用。

1 个答案:

答案 0 :(得分:0)

您应该修改您的Singleton类,如下所示

    @Service
    public abstract class SingletonClass{

     protected abstract Context createContext();

     private Context context;
     @PostConstruct
     public void init() {
     context = createContext();
     }

     public void run(){
     context().setXyz();
     }

     public void runThis(){
     context().getXyz();
     }

     public void runThisWithNewContext() {
     createContext().getXyz();
     }
     }

你的xml配置看起来像,

     <bean id="context" class="Context" scope="prototype" />
     <bean id="singletonClass" class="SingletonClass">
       <lookup-method name="createContext" bean="context" />
     </bean>