【问题标题】:Locking on spring mvc session command object锁定spring mvc会话命令对象
【发布时间】:2014-10-26 17:40:35
【问题描述】:

我有一个 spring 4 mvc 控制器。我正在使用注释来处理同一控制器中的多个请求。 - 例如

@RequestMapping("/add_dob")
public String addDateOfBirth(.......) {
    ........
    validateDOB(form, result)
    ........
}

@RequestMapping("/add_address")
public String addAddress(.......) {
    ........
}

问题是我有一个会话命令对象 (PERSON),并且命令对象有可能变得不一致。我尝试使用

<bean name="handlerAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="synchronizeOnSession" value="true" />
</bean>

在 servlet-name.xml spring 文件中,但这会导致应用程序上的所有请求都被同步(我通过将 Thread.sleep 放在我打算同步的请求中进行测试,然后尝试访问主页) .有什么方法可以让我在会话命令对象或小于整个会话的范围内同步?

谢谢

【问题讨论】:

    标签: spring session model-view-controller synchronization locking


    【解决方案1】:

    您可以使用特定的会话范围 bean,例如人:

    <bean class="com.xyz.Person" scope="session">
        <aop:scoped-proxy/>
    </bean>
    

    或带注释:

    @Bean @Scope("session") @ScopedProxy class Person {...}
    

    然后您可以 @Autowire 这个 bean 到您的 Web 服务类。 Spring 保证任何时候你引用它都会收到来自当前会话的对象。详情请见here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 2012-08-29
      • 2012-02-17
      • 2017-06-23
      相关资源
      最近更新 更多