2010-11-09 2 views
14

Я уже несколько часов борюсь с этим.Конфигурация транзакций для настроенного контекста Spring Java

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

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

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

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

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

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

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

Любая помощь приветствуется. Спасибо.

ответ

2

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

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

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

+0

ли вы все еще чувствуете этот путь сейчас, спустя 4 года, @skaffman? – GaZ

+1

Нет, я так не думаю. Стиль аннотации значительно богаче в современных версиях Spring, чем весной 3. – skaffman

+0

Спасибо за обновление. Это то, что я подозревал. Мы пытаемся обновить наш устаревший код до Spring 4, и как часть этого процесса я хотел бы как можно скорее удалить как можно больше нашей XML-конфигурации (если это имеет смысл, конечно, но я чувствую, что в большинстве мест основанный на аннотациях подход - лучший выбор). – GaZ

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