SpringAOP做事务管理

分类:JavaSE技术原创文章
作者:屈三岁

1.使用xml文件配置

1.1加坐标


        
            org.springframework
            spring-context
            5.0.3.RELEASE
        
        
            org.mybatis
            mybatis
            3.4.5
        
        
            org.mybatis
            mybatis-spring
            1.3.1
        
        
            mysql
            mysql-connector-java
            8.0.19
        
        
            com.alibaba
            druid
            1.0.9
        
        
            org.springframework
            spring-jdbc
            5.0.3.RELEASE
        
        
            junit
            junit
            4.12
            test
        
        
        
            org.springframework
            spring-tx
            5.0.3.RELEASE
        
        
        
            org.aspectj
            aspectjweaver
            1.8.7
        
        
            org.projectlombok
            lombok
            1.18.16
        
    

1.2 写配置文件appliactionContext.xml




    
    
        
        
        
        
    

    
    
        
    

    
    
        
    

    
    


    
    
        
        
    
    
    
        
        
            
            
        
    
    
    
        
        
        
        
    


2. 使用注解

2.1加坐标,

eg:1.1

2.2 写配置文件appliactionContext.xml





    
        
        
        
        
    

    
        
        
    

    
        
    
    
    
    

    
    
        
        
    

    
    
  

2.3 在业务层添加注解

package com.apesource.service;

import com.apesource.dao.IAccountDao;
import com.apesource.pojo.Account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;


/**
 * 该注解的属性和xml中的属性含义一致。该注解可以出现在接口上,类上和方法上。
 * 出现接口上,表示该接口的所有实现类都有事务支持。
 * 出现在类上,表示类中所有方法有事务支持
 * 出现在方法上,表示方法有事务支持。
 * 以上三个位置的优先级:方法>类>接口
 *
 *
 * 当采用javaConfig配置类来实现事务管理
 * @EnableTransactionManagement
 *              ↓
 *            等价于
 *  
 *      
 *  
 *  
 * */

@Service
@Transactional(readOnly=false,propagation= Propagation.SUPPORTS)
public class AccountServiceImp implements IAccountService {

    //注入
    @Autowired
    IAccountDao dao;

    /**
     * 转账业务
     * */
    @Override
    @Transactional(readOnly=false,propagation=Propagation.REQUIRED)
    public void transfer(String sourceName, String targetName, int money) {
               //2.1查询转账人与被转账人的信息
               Account sourceAccount = dao.findAccountByName(sourceName);
               Account targetAccount = dao.findAccountByName(targetName);
               //2.2开始转账
               sourceAccount.setAmoney(sourceAccount.getAmoney()-money);
               targetAccount.setAmoney(targetAccount.getAmoney()+money);
               //2.3修改数据库
               dao.updateAccountById(sourceAccount);
               //模拟转账事故
//               int a = 10/0;
               dao.updateAccountById(targetAccount);
    }
}

你可能感兴趣的:(SpringAOP做事务管理)