Конфигурация транзакции для Spring настроенный Java-контекст

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

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

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

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

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

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

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

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

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

Ответы

Ответ 2

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

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

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