慕课网项目:Java高并发秒杀API的学习笔记(二)Service层分析

3 篇文章 0 订阅
3 篇文章 0 订阅

课程链接:Java高并发秒杀API之Service层

CSDN参考:Java高并发秒杀API(二)之Service层

 

0.说明

本篇文章根据我自己的编程理解,结合参考的博客对该项目Service层进行分析与补充。

1.新加入的包说明

dto:数据传输层,用于Web层和Service层之间传递的数据封装。

exception:service层中会出现的异常。

service:针对业务的服务。这里我们定义SeckillService接口。

service.impl:具体实现。

enums:这个包下是秒杀状态的说明值。用一个枚举表示。

2.DTO

Exposer 用于封装秒杀的地址信息。

SeckillExecution 用于封装秒杀是否成功的结果(该对象用来返回给页面)。

3.Exception

重复秒杀异常,秒杀关闭异常。这两个继承自我们自定义的秒杀异常。

4.Service

SeckillService接口定义了以下方法

  • List<Seckill> getSeckillList();查询全部的秒杀记录

  • Seckill getById(long seckillId);查询单个秒杀记录

  • Exposer exportSeckillUrl(long seckillId);在秒杀开启时输出秒杀接口的地址,否则输出系统时间和秒杀时间

  • SeckillExecution executeSeckill(long seckillId, long userPhone, String md5) throws SeckillException, RepeatKillException, SeckillCloseException;执行秒杀操作,有可能失败,有可能成功,所以要抛出我们允许的异常

5.SpringIoC注入方式和场景

XML三方类库,命名空间的配置(比如说c-命名空间等)
注解项目中自身开发使用的类
Java配置类通过代码控制对象,创建逻辑的场景

本项目中IoC使用:通过xml配置package-sacn扫描包下注解。

6.关于Spring声明式事务

什么是声明式事物?

开启事务->修改SQL1-、修改SQL2、...、修改SQLN->提交/回滚事务

其中修改SQL这些都是解脱事务代码。

关于对tx:advice+aop命名空间使用Spring声明式事物的说明:

比如:所有service以add、update、execute开头的方法都是事物方法。Spring会为其自动添加事物控制逻辑。

7.什么时候回滚事务

RuntimeException才会回滚。

非运行时异常会部分成功部分不失败,因此要小心不当的try-catch。

8.总结

真正的核心其实是Service包。基于可能会出现的异常加入了exception,为了判断操作结果类型加入了enums,为了向前端返回数据加入了dto。

Service直接调用Dao层,完整了自下而上的组合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值