2014-09-29 102 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