我有一个单身服务类,如下所示:
@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
}
如何使用查找方法注入以线程安全的方式实现此目的?
我想跨方法分享状态。获取每种方法的新上下文,并在后续方法中使用。
答案 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>