Конфигурация транзакции для настроенного контекста Spring Java - PullRequest
14 голосов
/ 10 ноября 2010

Я боролся с этим уже несколько часов.

Я пытаюсь перенести мою конфигурацию Spring XML в полную конфигурацию на основе Java.

Я использую AnnotationConfigApplicationContext в качестве реализации контекста.

У меня проблемы с поиском Java-эквивалента для этой строки из моей старой конфигурации XML:

<tx:annotation-driven transaction-manager="transactionManager" />

В результате Spring не управляет транзакциями.

В моей конфигурации Java я инициализировал соответствующие bean-компоненты для транзакций: фабрика сеансов, менеджер транзакций и т. Д., Но без этой строки прокси транзакции не используется, поэтому транзакции фактически не выполняются.

Так что мой вопрос в том, как мне перевести эту строку в мою конфигурацию контекста Java или как мне решить проблему другим способом.

Любая помощь приветствуется.Благодарю.

Ответы [ 3 ]

12 голосов
/ 10 мая 2012

Теперь вы можете использовать @ EnableTransactionManagement.

См .: http://blog.springsource.com/2011/06/10/spring-3-1-m2-configuration-enhancements/

2 голосов
/ 10 ноября 2010

По моему опыту, нецелесообразно полностью заменять конфигурацию XML конфигурацией в стиле @Bean.Некоторые вещи имеют больше смысла, сконфигурированные в java, в частности ваши собственные определения bean-компонентов.Но когда дело доходит до объявлений инфраструктурного типа, таких как <tx:annotation-driven>, синтаксис XML гораздо более краткий.

Вы можете воспроизвести тот же эффект в чистой Java, но в конечном итоге он становитсягромоздкие и не интуитивно понятные, поскольку такие вещи, как <tx:annotation-driven>, обычно представляют собой взаимодействия сложных низкоуровневых классов инфраструктуры Spring, к которым вы действительно не хотите прикасаться.

Мой совет - смешивайте и сопоставляйте, используя каждый из Java и XMLза свои сильные стороны.Это довольно легко сделать.Я предпочитаю оставить обычные классы XML ApplicationContext, а затем объявить мои @Configuration классы как bean-компоненты в этом контексте XML наряду с такими вещами, как <tx:annotation-driven>.

0 голосов
/ 18 февраля 2011

Взгляните на https://spring.io/blog/2011/02/17/spring-3-1-m1-introducing-featurespecification-support. Классы FeatureSpecification в Spring 3.1, такие как TxAnnotationDriven, предназначены для решения именно описанной выше проблемы.

...