【发布时间】:2014-08-30 14:21:43
【问题描述】:
Spring 4 @Service 的默认范围是什么?
设计一个 Service 实现来存储有关当前登录用户的信息(根据当前 HTTP 会话)是否有意义,通过 class 属性 em>(也可以使用final 修饰符)?
【问题讨论】:
Spring 4 @Service 的默认范围是什么?
设计一个 Service 实现来存储有关当前登录用户的信息(根据当前 HTTP 会话)是否有意义,通过 class 属性 em>(也可以使用final 修饰符)?
【问题讨论】:
Spring 4 @Service 的默认范围是什么?
默认作用域是单例
为了存储一些与当前登录用户相关的信息(根据当前的 HTTP 会话),设计一个 Service 实现是合理的
是的。在这种情况下,服务必须具有“会话”范围。见http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-scopes-other
【讨论】:
@Scope("session"),对吧?
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS) 或@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.INTERFACES),具体取决于您喜欢的代理模式,以便可以在任何地方注入会话bean。
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS) 时,出现以下错误。 `org.springframework.beans.factory.BeanCreationException:创建名为“scopedTarget.reportBuilder”的bean时出错:当前线程的范围“会话”不活动;如果您打算从单例中引用它,请考虑为该 bean 定义一个作用域代理;嵌套异常是 java.lang.IllegalStateException: No thread-bound request found: 你能建议解决这个问题吗?