• 事务框架之声明事务(自动开启,自动提交,自动回滚)Spring AOP 封装


    利用Spring AOP 封装事务类,自己的在方法前begin 事务,完成后提交事务,有异常回滚事务

    比起之前的编程式事务,AOP将事务的开启与提交写在了环绕通知里面,回滚写在异常通知里面,找到指定的方法(切入点),代码如下:

    代码在这个基础上重构:

     https://www.cnblogs.com/pickKnow/p/11135310.html

    @Component
    @Aspect
    @Scope("prototype")
    public class AopTransaction { @Autowired private TransactionUtils transactionUtils; @Around("execution (* com.hella.thread.aoptransaction.service.UserService.addUser(..) )") public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { //不要try catch 不然回滚不了,一直占用资源 System.out.println("开启事务"); TransactionStatus transactionStatus = transactionUtils.begin(); proceedingJoinPoint.proceed(); transactionUtils.commit(transactionStatus); System.out.println("提交事务"); } @AfterThrowing("execution (* com.hella.thread.aoptransaction.service.UserService.addUser(..) )") public void afterThrowing() { System.out.println("事务开始回滚"); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } }

    那service 层方法里面就不需要再写事务的开启,提交,回滚了。

    @Service
    public class UserServiceImpl implements UserService {
    
        @Autowired
        private UserDao userDao;
        @Override
        public void addUser() {
            // 添加到数据库
            System.out.println("开始添加");
            userDao.add(1, "tom", "12");
        }
    }
  • 相关阅读:
    三种回归算法及其优缺点
    线性回归于逻辑回归的区别
    置信度与置信区间
    js表单验证是否为合法数据
    unity变换游戏对象
    Unity克隆物体
    Unity创建游戏对象_位置,大小,旋转
    Unity GUI获取玩家名字并在控制台输出
    算法竞赛入门经典_暴力求解法
    java Swing组件的对齐问题2
  • 原文地址:https://www.cnblogs.com/pickKnow/p/11138118.html
Copyright © 2020-2023  润新知