0

Я hava контроллер весны 4 mvc. Я использую аннотации для обработки нескольких запросов в одном контроллере. - например.Блокировка на пружине mvc session command object

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

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

Дело в том, что у меня есть команда сеанса объекта (человека) и есть возможность объекта команды становятся несовместимыми. Я попытался с помощью

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

в весеннем файле сервлет-name.xml, но это вызывает все запросы о применении для синхронизации (я проверил, поставив Thread.sleep внутри запроса, на котором я намерен синхронизировать, а затем пытался получить доступ к домашней странице). Есть ли способ, по которому я могу просто синхронизировать объект сеанса или область действия, меньшую, чем весь сеанс?

Thanks

ответ

0

Вы можете использовать конкретный компонент, связанный с сеансом, например. Лицо:

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

Или с аннотациями:

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

Вы можете затем @Autowire этот компонент для вашего класса веб-службы. Весна гарантирует, что в любой момент, когда вы ссылаетесь на нее, вы получите объект из текущего сеанса. См. here для получения более подробной информации.