栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring的事务处理------anno

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring的事务处理------anno

适合中小型项目使用的,注解方案。
    spring框架自己用aop实现给业务方法增加事务的功能,使用@Transactional注解增加事务。
    @Transactional注解是spring框架自己注解,放在public方法的上面,表示当前方法具有事务。
    可以给注解的属性赋值,表示具体的隔离隔离级别,传播行为,异常信息等等。

    使用@Transactional的步骤:
    1.需要声明事务管理器对象
        
    
    2.开启事务注解驱动,告诉Spring框架,我要使用注解的方式管理事务。
        Spring使用aop的机制,创建@Transactional所在类代理的对象,给方法加入事务的功能。
        spring给业务方法加入事务:
            在你的业务方法执行之前,先开启事务,在业务方法之后提交或回滚事务,使用aop的环绕通知.
        
            @Around("你要增加的事务功能的业务方法名称")
            Object MyAround(){
                开启事务,spring给你开启
                try{
                    spring的事务管理.commit();
                }catch(Exception e){
                    spring的事务管理.rollback();
                }
            }

    3.在你的方法上面加入@Transactional

ServiceImpI 

package edu.tjdz.service.ImpI;

import edu.tjdz.dao.GoodsDao;
import edu.tjdz.dao.SaleDao;
import edu.tjdz.domain.Goods;
import edu.tjdz.domain.Sale;
import edu.tjdz.exce.NotEnoughException;
import edu.tjdz.service.BuyGoodsService;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

public class BuyGoodsServiceImpl implements BuyGoodsService {

    private SaleDao saleDao;
    private GoodsDao goodsDao;

    
   

   //使用的是事务控制的默认值,默认的传播行为是REQUIRED,默认的隔离级别是DEFAULT
    //默认抛出运行时异常,回滚事务
   @Transactional
    @Override
    public void buy(Integer goodsId, Integer nums) {
        System.out.println("buy方法的开始====");
        //记录销售信息,向Sale表中添加记录
        Sale sale = new Sale();
        sale.setGid(goodsId);
        sale.setNums(nums);
        saleDao.insertSale(sale);


        //更新库存
        Goods goods = goodsDao.selectGoods(goodsId);
        if(goods == null){
            // 商品不存在
            throw new NullPointerException("编号是:"+goodsId+",商品不存在");
        }else if(goods.getAmount() < nums){
            //商品库存不足
            throw new NotEnoughException("编号是:"+goodsId+",商品库存不足");
        }
        //修改库存了
        Goods buyGoods = new Goods();
        buyGoods.setId(goodsId);
        buyGoods.setAmount(nums);
        goodsDao.updateGoods(buyGoods);
        System.out.println("====buy方法完成了");
    }

    public void setSaleDao(SaleDao saleDao) {
        this.saleDao = saleDao;
    }

    public void setGoodsDao(GoodsDao goodsDao) {
        this.goodsDao = goodsDao;
    }
}

xml文件




    
    

    
    
        
        
        
        
        
        
     

    
    
        
        
        
        
     

    
    
        
        
        
        
    

    
    
        
        
    

    
    
    
        
        
    

    
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434944.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号