2015-05-13 3 views
2

В нашем веб-приложении у нас много контекстов. В одном из них включен tx:annotation-driven. В результате у меня есть возможность использовать аннотацию @Transactional вокруг проекта, за исключением созданных и отсканированных бобов (@Controller и связанных с ними @Service, @Component и т. Д.) В spring-servlet.xml (для контекста приложения одного сервлета, который был рассмотрен в Difference between applicationContext.xml and spring-servlet.xml in Spring Framework).@Transactional среди spring-servlet.xml и application-context.xml

Мои цели - дополнительно включить эту функцию для фасолей, связанных с spring-servlet.xml. Я могу попытаться сделать это, добавив tx:annotation-driven, но по этой теме spring multiple transaction manager issue такая конфигурация считается недействительной.

Может кто-то предложить, каким образом я могу позволить @Transactional для бобов из spring-servlet.xml

+0

Почему бы просто не комментировать классы, которые вы хотите совершить с помощью @Transactional? –

+0

@WeareBorg OP делает это. Вопрос заключается в том, как включить эту аннотацию для нескольких контекстов в одном приложении. – GriffeyDog

ответ

2

Я не уверен, правильно ли я понимаю, ваши настройки, но я предполагаю, что у вас есть есть пружинный веб-приложение с несколькими сервлетов; каждый сервлет имеет свой собственный весенний контекст, и все они имеют один и тот же исходный весенний контекст: application-context.xml.

Если это ваша настройка, вы должны определить свой PlatformTransactionManager один раз в application-context.xml; поскольку он определен в родительском контексте, он автоматически доступен в каждом контексте весов сервлета. Затем вы должны иметь возможность использовать tx:annotation-driven в каждом контексте весны сервлета и в родительском контексте, без каких-либо проблем, если они используют один и тот же менеджер транзакций.

Не обязательно определять менеджера транзакций в каждом контексте, где вы хотите использовать tx:annotation-driven.

Смежные вопросы