为每个请求创建Singleton对象

时间:2011-05-21 07:53:21

标签: java spring java-ee aspectj

我想创建一个sinlgetom对象,其范围基本上只是请求。这将用于收集错误,我们需要在发送响应时发送错误.. 我能不能为这件事提供指示? 我也在用春天。

我尝试使用Spring容器单例对象作用域会话或请求,但仍然mu对象持有来自先前请求的值

我在AspectJ..is中使用此错误对象可能会导致静态绑定问题

4 个答案:

答案 0 :(得分:1)

怎么样

//sync this code
if(request.getAttribute("someKey") == null){
     // create object and set it
}

答案 1 :(得分:1)

如果将Spring容器中的Object生命周期设置为每个请求,那么它应仅存在于该HttpRequest中。

通常对于像Spring这样的直接注入容器,当你将对象生命周期或对象范围设置为每个请求时,它应该为它收到的每个http请求创建一个新的对象实例。

如果它没有这样做那么我会认为它很可能与你的配置有关。

Singleton是创建bean时spring容器的defualt我认为你必须根据请求专门设置对象范围。

Bean范围 http://static.springsource.org/spring/docs/2.5.x/reference/beans.html

答案 2 :(得分:0)

我不确定单身是你想要的 - 如果两个请求同时到达,他们将共享单个对象,他们的错误将会混淆。

是否可以创建一个对象来保存错误并将其放入ThreadLocal对象中。对象的范围将受到请求的约束,并且可以从应用程序中轻松实现对ThreadLocal对象的访问,而无需将引用传递给周围的对象。

答案 3 :(得分:0)

您可以使用ThreadLocal