Я хотел бы настроить следующую транзакционную AOP на основе 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, описанным выше.Я обязательно что-то упущу.