@Aspect
@Configuration
public class HandleTransaction {
private static final String POINT_CUT = "execution(public * com.archives.management.service.impl..*(..))";
@Resource
private TransactionManager transactionManager;
@Bean
public TransactionInterceptor txAdvice() {
DefaultTransactionAttribute required = new DefaultTransactionAttribute();
required.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
DefaultTransactionAttribute readOnly = new DefaultTransactionAttribute();
readOnly.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
readOnly.setReadOnly(true);
NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();
source.addTransactionalMethod("insert*", required);
source.addTransactionalMethod("add*", required);
source.addTransactionalMethod("save*", required);
source.addTransactionalMethod("delete*", required);
source.addTransactionalMethod("update*", required);
source.addTransactionalMethod("batch*", required);
source.addTransactionalMethod("*", readOnly);
return new TransactionInterceptor(transactionManager, source);
}
@Bean
public Advisor txAdviceAdvisor() {
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression(POINT_CUT);
return new DefaultPointcutAdvisor(pointcut, txAdvice());
}
}
java 统一事务处理
最新推荐文章于 2024-04-17 17:14:19 发布