Конфигурация весенней транзакции - PullRequest
0 голосов
/ 19 июля 2011

При настройке транзакции Spring через xml, хорошо ли связывать интерфейсы или конкретные классы для транзакций? Я думал, что мы должны иметь сопоставленные интерфейсы для обработка транзакций, но я нашел это из документации Spring: «Рекомендация команды Spring состоит в том, что вы можете аннотировать только конкретные классы с помощью @ Транзакционная аннотация ".

Пожалуйста, поделитесь своими мыслями.

Ответы [ 3 ]

3 голосов
/ 19 июля 2011

Границы транзакции являются деталями реализации, поэтому они должны указываться реализацией, а не интерфейсом.

Например, представьте, что в некоторых сложных случаях вам необходимо использовать программное управление транзакциями (TransactionTemplate) вместо @Transactional для одного из ваших методов. Если у вас @Transactional на уровне интерфейса, это будет невозможно.

2 голосов
/ 19 июля 2011

Интерфейсы являются контрактами.Транзакционность не является (как правило) частью контракта.Это деталь реализации.Следовательно, @Transactional принадлежит классу реализации, а не интерфейсу.

0 голосов
/ 19 июля 2011

@ Transactional аннотации не наследуются от интерфейсов, поэтому, если вы используете другой метод прокси (например, proxy-target-class = true или aspectj ) Ваш реальный метод не будет транзакционным.

См. Proxy-aop (стандартная аннотация транзакции) http://static.springsource.org/spring/docs/3.0.x/reference/aop.html#aop-understanding-aop-proxies

...