2014-09-29 103 views
2

我有一个用例,理论上我认为这是一个解决的问题。但我无法找到一个可靠的解雇实施。每个事务对象的单个实例

  1. 我创建一个RESTful API,使用Apache CXF,Spring和Hibernate
  2. 此应用程序包括一个标准的服务,代理DAO层结构
  3. 我需要我的服务实例化一个自定义日志对象(或预服务)层,并初始化一组参数,这些参数将保持不变,大部分是通过每次通过我的应用程序层返回的调用。
  4. 我如何为每个单独的服务调用初始化此记录器对象一次,并在整个层中使用它,而无需每次都实例化它。要么我在每个需要的课程中注入初始化的对象,或者在这些行中注入某些东西。
  5. 我不想使用静态块,或传递方法签名中的对象。

有什么我可以用作Spring,CXF或其他Java框架的一部分,允许我实现这种用例。

编辑:我会定义一个事务作为单个调用到Web服务端点,从调用到响应。

+0

你有没有听说过AOP?如果没有的话,请阅读http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/aop.html,你会在路上 - 但它可能需要一段时间让一切顺利。 – blagae 2014-09-29 13:15:33

回答

4

ThreadLocal将是解决您的问题的理想人选。

UPDATE:

本地创建一个线程是在哪里都需要这种“共享”参考将给所有这些情况下使用这些资源,而不必通过周围参考的地方使用。

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

+1

你可能想扩大你的答案 – kolossus 2014-09-29 21:03:41

+0

扩大我的答案 – 2014-09-30 10:34:37