我们使用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
吗?如何在请求完成后将其设置为唯一并擦除所有数据?
谢谢!