我有一个如下所示的单例服务类:
@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
}
如何通过查找方法注入(inject)以线程安全的方式实现此目的?
我想跨方法共享状态。使用每个方法获取新的上下文并在后续方法中使用。
最佳答案
您应该按如下方式修改您的 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>
关于java - Spring单例服务和原型(prototype)方法查找注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30319471/