Я хотел бы на основе транзакционного-АОП следующего XML настройки программно с помощью Java:Программный транзакционный АОП?
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor id="managerTx" advice-ref="txAdvice" pointcut="execution(* *..service.*Manager.*(..))" order="2"/>
</aop:config>
До сих пор у меня есть следующий. Я могу создать выражение Pointcut так:
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression("execution(* *..service.*Manager.*(..))");
Тогда, возможно, используя комбинацию AspectJPointcutAdvisor
и AspectJAroundAdvice
я могу настроить фактический совет.
Однако, глядя на код Spring, который поддерживает пространство имен tx
, создается TransactionInterceptor
. Возможно, я смотрю на все это неправильно.
Почему я хочу это сделать, спросите вы?
Ну, я переместил мою конфигурацию пружин из XML в классы @Configuration, но я зациклился на том, как перевести содержимое пространства имен tx. Хотя, я использую аннотации @EnableTransactionManagement
и @Transactional
, слишком рискованно добавлять аннотацию ко всем методам, сопоставляемым выражением pointcut, описанному выше. Я должен что-то пропустить.