0

我有一個彈簧4 mvc控制器。我正在使用註釋處理同一控制器中的多個請求。 - 例如鎖定彈簧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的彈簧文件

但是這是造成在應用的所有請求將被同步(I測試通過把了Thread.sleep請求內側上我打算同步,然後試圖訪問主頁)。有什麼辦法可以在會話命令對象上或在小於整個會話的作用域上同步?

謝謝

回答

0

您可以使用特定的會話範圍的bean,聯繫人:

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

或用註釋:

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

然後,您可以@Autowire這個bean到Web服務類。 Spring保證每當你引用它時,你都會從當前會話中接收對象。有關更多詳細信息,請參閱here