Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 每个事务一个对象的单个实例_Spring_Web Services_Rest_Jakarta Ee_Cxf - Fatal编程技术网

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

Spring 每个事务一个对象的单个实例,spring,web-services,rest,jakarta-ee,cxf,Spring,Web Services,Rest,Jakarta Ee,Cxf,我有一个用例,理论上我认为这是一个已解决的问题。但我无法找到一个可靠的实现 我使用ApacheCXF、Spring和Hibernate创建了一个RESTful API 此应用程序包含一个标准的服务代理DAO分层结构 我需要在我的服务(或预服务)层实例化一个自定义记录器对象,并初始化一组将保持不变的参数,大多数情况下,这些参数都会通过我的应用层进行调用 对于每个单独的服务调用,我如何初始化这个logger对象一次,并跨所有层使用它,而不必每次都实例化它。要么在我需要的每个类中注入初始化对象,要么在

我有一个用例,理论上我认为这是一个已解决的问题。但我无法找到一个可靠的实现

  • 我使用ApacheCXF、Spring和Hibernate创建了一个RESTful API
  • 此应用程序包含一个标准的服务代理DAO分层结构
  • 我需要在我的服务(或预服务)层实例化一个自定义记录器对象,并初始化一组将保持不变的参数,大多数情况下,这些参数都会通过我的应用层进行调用
  • 对于每个单独的服务调用,我如何初始化这个logger对象一次,并跨所有层使用它,而不必每次都实例化它。要么在我需要的每个类中注入初始化对象,要么在这些行中注入一些东西
  • 我不想使用静态块,也不想在方法签名中传递对象
  • 是否有任何东西可以作为Spring、CXF或其他java框架的一部分使用,使我能够实现这个用例


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

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

    更新:

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


    请参阅-这似乎是一个很好的解释,说明了如何使用线程本地以及如何处理您的问题空间。

    您听说过AOP吗?如果没有,读这篇文章,你就可以上路了——但要想把一切都搞定可能需要一段时间。你可能想扩大你的答案