【问题标题】:Spring Service default scopeSpring Service 默认范围
【发布时间】:2014-08-30 14:21:43
【问题描述】:

Spring 4 @Service 的默认范围是什么?

设计一个 Service 实现来存储有关当前登录用户的信息(根据当前 HTTP 会话)是否有意义,通过 class 属性 em>(也可以使用final 修饰符)?

【问题讨论】:

    标签: java spring scope


    【解决方案1】:

    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。
    • 嗨,你能告诉我 Spring 3 @service 的默认范围是什么吗?我遇到了不同用户会话显示相同值的问题。
    • @EvaMariam 默认范围一直是单例的。
    • 当我使用@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: 你能建议解决这个问题吗?
    猜你喜欢
    • 2018-07-03
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    相关资源
    最近更新 更多