Транзакционная аннотация для отката для каждого проверенного исключения - с AspectJ - PullRequest
1 голос
/ 13 июля 2020

Я хотел бы использовать аннотацию @Transactional (org.springframework.transaction.annotation) для управления транзакциями. Мне нужно, чтобы откат выполнялся для каждого исключения (а не только непроверенных исключений), поэтому я использую:

@Transactional (rollbackFor = Exception.class)

Я использую режим AspectJ, и он работает нормально.

Проблема в том, что я не хочу, чтобы разработчику приходилось каждый раз добавлять атрибут rollbackFor. Я нашел этот ответ, который предлагает расширить аннотацию @Transactional, например:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional(rollbackFor=Exception.class)
public @interface TransactionalWithRollback {
}

и использовать новую аннотацию вместо исходной. Однако у меня такой подход не работает. Я не вижу, чтобы файлы AjcClosure были созданы при сборке проекта для тех методов, которые были аннотированы расширенной аннотацией. Они создаются, как и ожидалось, для методов, аннотированных исходной аннотацией транзакции.

Это решение не работает с AspectJ? Возможно, AspectJ обрабатывает только исходную аннотацию транзакции? Есть ли другое решение моей проблемы, которое может работать с AspectJ, чтобы нам не приходилось каждый раз указывать атрибут rollbackFor?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...