每个请求访问所有线程的Spring singelton

时间:2017-10-22 19:04:26

标签: java spring multithreading static singleton

我们使用spring进行依赖注入,但Web服务正在不同的自定义框架上运行。 虽然处理请求服务会对其他依赖项(如dbs和其他apis)进行大量异步调用。

问题:

我需要在代码中的任何位置捕获任何对象,并且可以在一次请求期间访问来自任何其他地方的所有捕获对象。请注意,一个请求会旋转许多其他线程,并且我存储所有捕获的对象的global storage必须可以从父线程和子线程访问和显示。

另外,我不允许更改现有代码或传递函数中的任何参数。我需要有一些带有全局上下文的singleton,我可以从任何地方更新它,任何子线程仍然可以访问和修改它。

重要提示: global storage的生命周期必须是每次请求。换句话说,我希望每次请求完成时都由垃圾收集器收集该对象。

思想: 我的想法是创建类似log4j的东西,我将它导入到类的顶部并使用它来捕获对象。 例如

@Autowire
private GlobalStorage storage;

public void doSomething(){
   Object obj = getObjc();
   storage.add(obj);
}  

问题: 您对GlobalStorage的实施有何建议?我需要制作InheritableThreadLocal吗?如何在请求完成后将其设置为唯一并擦除所有数据?

谢谢!

0 个答案:

没有答案