第七天业务题

7-1 介绍一下你们项目中的优惠券功能

优惠券功能在项目中是不可或缺的,可以吸引用户进行交易。优惠券的具体功能如下:

优惠券设置:商家可以自定义优惠券的优惠金额、数量、有效期、优惠券使用规则等。

优惠券获取:根据优惠券种类,有两种获取方式,商家可以向用户发放优惠券,如果发现优惠券的领取方式是指定发放,则需要生成兑换码,用户也可以在商家的网站上抢优惠券。

优惠券使用:在用户购买商品时,系统需要验证用户所使用的优惠券的有效性。这包括检查优惠券是否过期、是否达到最低消费金额、是否适用于购买的商品等条件。

根据优惠券的类型,系统需要计算出用户享受的优惠金额或折扣,并在结算时自动扣减相应的金额。

以上就是我们项目中优惠券所实现的功能。


7-2 你们项目中是如何防止优惠券超领的 

在我们项目中发现优惠券超领有两种情况:多人超领、单人超领。针对这两种不同的情况有不同的解决方案。

多人超领时,可以使用乐观锁解决此问题,每次提交前只要判断当前数量是否小于总计数量即可。这样,只要当前数量小于总计数量,不管有多少线程来执行,都会成功。

单人超领时,可以使用悲观锁解决此问题,可以通过在领取优惠券代码块上加锁,锁用户id来解决此问题。

以上就是我们项目防止优惠券超领的解决方法


7-3 事务失效的场景有哪些

事务失效的场景有:事务方法非public修饰、非事务方法调用事务方法、事务方法的异常被捕获、事务异常类型不对、事务传播行为不对这几种情况。

事务方法非public修饰:由于Spring的事务是基于AOP结合动态代理实现的,因此事务方法一定要被public修饰,这样才能便于被Spring做事务的代理和增强。而且,在Spring内部也会有一个检查事务方法的修饰符的类。

非事务方法调用事务方法:非事务方法调用事务方法导致事务失效的原因,与Spring框架的事务管理机制有关。Spring通过代理对象实现事务管理,但是非事务方法不会触发代理对象的创建,导致事务失效。

事务方法的异常被捕获:非事务方法调用事务方法时,由于异常被捕获而不会向外抛出,导致Spring无法感知事务异常,从而无法回滚事务,导致事务失效。

事务异常类型不对:Spring事务管理默认只感知RuntimeException异常,对于其他异常如IOException,Spring无法捕获并回滚事务,导致事务失效。

事务传播行为不对:事务传播行为定义了事务方法与其他事务方法的关系,包括如何处理事务的传播和边界。如果事务传播行为设置不正确,可能会导致事务失效或产生意外的结果。
 

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值