当前位置 > it书童 > java > 正文

spring 基于注解的 AOP 实现事务控制

java it书童 2020-08-22 10:50:35 0赞 0踩 59阅读 0评论

spring 基于 xml 的 AOP 实现事务控制,本篇将用注解实现同样的功能

使用注解出现的问题:最终通知先于后置通知执行,最终通知执行时已经释放连接,导致后置通知在提交时,并没有任何操作

基于注解出现的顺序问题,需要用环绕通知自定义执行的顺序

TransactionManager

@Component("txManager")
@Aspect
public class TransactionManager {
    @Pointcut("execution(* com.itshutong.service.impl.*.*(..))")
    private void pt1(){}
    // ...
    @Around("pt1()")
    public Object aroundAdvice(ProceedingJoinPoint pjp) {
        Object rtValue;
        try {
            Object[] args = pjp.getArgs();
            this.beginTransaction();
            rtValue = pjp.proceed(args);
            this.commit();
            return rtValue;
        } catch (Throwable throwable) {
            this.rollback();
            throw new RuntimeException(throwable);
        } finally {
            this.release();
        }
    }
}

环绕通知中的异常不能用 Exception,必须用 Throwable 才能控制得了

源码

转载须注明出处:https://www.itshutong.com/articles/661/spring-implements-transaction-control-based-on-annotation-aop
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
发表评论
我有句话,不知当讲不当讲?
要讲之前请先 登录