Java高并发秒杀API之Service


本文主要是针对慕课网的Java高并发秒杀API之Service这门课程内容做一些整理,这是实现秒杀系统的第二门课程。

1、秒杀业务接口设计与实现

DAO编码之后的思考

  • DAO层是数据访问层的简称
  • DAO层工作演变成为:接口设计+SQL编写
  • 代码和SQL的分离,方便Review
  • DAO拼接等逻辑在Service层完成

秒杀service接口设计

  • 在org.seckill下新建三个package
  • service:存放service接口和实现类
  • exception:存放service记录里面的异常,比如重复秒杀、秒杀已关闭
  • dto:数据传输层,存放表示数据的类型,关注web和service之间的数据传递
  • 在service包下创建SeckillService接口
  • 在dto包下创建Exposer类,Alt+Insert生成构造方法constructor
  • 在dto包下创建SeckillExecution类
  • 在Exception异常包里添加重复秒杀异常、秒杀关闭以及秒杀相关业务,前两个方法可以继承第三个方法

秒杀service接口实现

  • 在service下创建一个impl包,里边放SeckillServiceimpl类的实现
  • 快捷键添加implement methods 方法
  • 在org.seckill下新建enums枚举包,写SeckillStatEnum类

2、基于Spring托管Service实现类

基于Spring托管Service依赖理论

  • Spring IOC(依赖注入)
    • 对象工厂
    • 依赖管理
    • 一致的访问接口

在这里插入图片描述

  • 为什么用IOC
    • 对象创建统一托管
    • 规范的生命周期管理
    • 灵活的依赖注入
    • 一致的获取对象

在这里插入图片描述

  • 本项目IOC使用
    • XML配置
    • package-scan
    • Annotation注解

使用Spring托管Service依赖配置

  • 在spring下创建一个spring-service.xml文件
  • 做seckill包的配置
  • 在SeckillServiceImpl.java中注入Service和Autowird方法

3、配置并使用spring声明式事务

使用spring声明式事务理论

  • 什么是声明性事务
    • 开启事务
    • 修改SQL-1
    • 修改SQL-2
    • 修改SQL-n
    • 提交/回滚事务
  • 声明性事务使用方式
    • ProxyFactoryBean + XML(早期使用方式2.0)
    • tx:advice+aop命名空间(一次性配置永久生效)
    • 注解@Transactional(注解控制)(推荐使用)
  • 事务方法嵌套
    • 声明式事务独有的概念
    • 传播行为(propagation_required)
  • 什么时候回滚事务
    • 抛出运行期异常(RuntimeException)
    • 小心不当的try-catch

配置spring声明式事务

在spring下的spring-service.xml文件中进行配置

4、使用集成测试service逻辑

  • 在SeckillService.java里快捷键创建test文件
  • 在测试文件中进行集成测试
  • resource下创建一个logback,xml文件
  • 在https://logback.qos.ch/manual/configuration.html中寻找logback配置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值