Аннотация - лучший выбор для обозначения того, что метод должен выполняться в транзакции. Рекомендуется как для Spring, так и для EJB 3.
Подход XML требует гораздо больше настроек, не подходит для рефакторинга, и вы должны увидеть в конфигурации, будет ли определенный метод выполняться в транзакции или нет.
Поскольку поддержка транзакций на основе аннотаций является предпочтительным выбором большинства разработчиков, и вам не нравится использовать аннотацию Spring @Transactional
, я рекомендую вам использовать пользовательскую аннотацию.
Тогда у вас есть два варианта:
- Позвольте вашей пользовательской аннотации расширить
@Transactional
Spring и использовать элемент <tx:annotation-driven />
в вашей конфигурации Spring. Это просто, и для удаления зависимости Spring необходимо обновить только одну аннотацию.
- Создать перехватчик, который выполняет логику до и после аннотированного метода. С Spring в качестве контейнера вы должны делегировать обработку транзакций от рекомендаций перехватчика до и после вашей предпочтительной реализации
PlatformTransactionManager
.
Я писал о том, как создать перехватчик, который добавляет логику до и после метода, помеченного аннотацией здесь . И продемонстрировал, какие методы вы должны использовать в PlatformTransactionManager здесь .
Надеюсь, это поможет!