Ответ 1
Теперь вы можете использовать @EnableTransactionManagement.
Смотрите: http://blog.springsource.com/2011/06/10/spring-3-1-m2-configuration-enhancements/
Я боролся с этим в течение нескольких часов.
Я пытаюсь перенести мою конфигурацию XML Spring в полную конфигурацию на Java.
Я использую AnnotationConfigApplicationContext
как реализацию контекста.
У меня возникли проблемы с поиском эквивалента Java для этой строки из моей старой конфигурации XML:
<tx:annotation-driven transaction-manager="transactionManager" />
В результате Spring не управляет транзакциями.
В моей конфигурации Java я инициализировал соответствующий beans для транзакций: сеанс factory, транзакционный менеджер и т.д., но без этой строки не используется прокси-сервер транзакции, поэтому никаких транзакций на самом деле нет.
Итак, мой вопрос заключается в том, как перевести эту строку в конфигурацию контекста Java или как решить проблему по-другому.
Любая помощь приветствуется. Благодарю.
Теперь вы можете использовать @EnableTransactionManagement.
Смотрите: http://blog.springsource.com/2011/06/10/spring-3-1-m2-configuration-enhancements/
По моему опыту, практически невозможно полностью заменить конфигурацию XML конфигурацией @Bean
-style. Некоторые вещи делают больше смысла в java, в частности, ваши собственные определения bean. Но когда дело доходит до объявлений с инфраструктурным типом типа <tx:annotation-driven>
, синтаксис XML намного более краткий.
Вы можете воспроизвести тот же эффект в чистом java, но он становится громоздким и неинтуитивным, поскольку такие вещи, как <tx:annotation-driven>
, как правило, взаимодействуют с сложными низкоуровневыми классами инфраструктуры Spring, которые вы действительно не хотите трогать.
Мой совет - смешивайте и сопоставляйте, используя каждую из Java и XML для своих сильных сторон. Это довольно легко сделать. Я предпочитаю хранить обычные классы XML ApplicationContext, а затем объявлять классы @Configuration
как beans в этом контексте XML, наряду с такими вещами, как <tx:annotation-driven>
.
Посмотрите https://spring.io/blog/2011/02/17/spring-3-1-m1-introducing-featurespecification-support. Spring 3.1 Классы FeatureSpecification, такие как TxAnnotationDriven, предназначены для решения именно проблемы, описанной выше.