每个事务的对象的单个实例

时间:2014-09-29 13:06:11

标签: spring web-services rest java-ee cxf

我有一个用例,从理论上来说,这似乎是一个解决的问题。但我无法找到一个肯定被解雇的实施。

  1. 我使用Apache CXF,Spring和Hibernate创建了一个RESTful API
  2. 此应用程序包含标准的Service-Proxy-DAO分层结构
  3. 我需要在我的服务(或预服务)层实例化一个自定义记录器对象,并初始化一组参数,这些参数将保持不变,大部分是通过我的应用程序层并返回的每个调用。
  4. 对于每个单独的服务调用,我如何初始化此logger对象一次,并在所有层中使用它,而不必每次都实例化它。我要么在我需要的每个类中注入初始化对象,要么在这些行中注入一些东西。
  5. 我不想使用静态块,也不想在方法签名中传递对象。
  6. 我是否可以将其作为Spring,CXF或其他允许我实现此用例的java框架的一部分使用。

    编辑:我将一个事务定义为对调用到响应的Web服务端点的单个调用。

1 个答案:

答案 0 :(得分:4)

ThreadLocal是解决问题的理想选择。

更新:

创建一个在需要此“共享”引用的所有位置都可用的本地线程将使所有这些上下文都可以访问此资源,而无需传递引用。

请参阅http://www.appneta.com/blog/introduction-to-javas-threadlocal-storage/ - 看起来很好地解释了如何使用本地线程并处理您的问题空间。