毫无疑问的,springboot托管的实体类默认是以单例模式的形式进行实例化的,但是在某些场景下,我们需要的不是单例模式的实体类,这个时候我们该如何去实现springboot托管的实体类进行多例模式的创建呢?
一、单例模式存在的问题
1、业务场景介绍
就是我们为什么会有改变springboot默认单例模式的这种创建bean的形式?这个业务场景是这样的,我们在做优惠券的校验的时候,我们自己封装了一个优惠券的校验类,这样的话,我们就可以很方便的进行统一的优惠券的校验了,在做优惠券的校验的时候,我们会有一个打折的情况,这里会出现一个四舍五入的问题,就会导致数据并不是原来的数据,会有一个偏差,我们到底是采用什么模式进行小数的取舍,这里是值得探讨的,但是我们这里的处理方式是将折扣价的计算封装成了一个接口,这样我们写了几个实现类,有四舍五入的方式,有直接舍去的方式,有银行家算法的方式,我们在使用的时候直接使用实现类来计算就好,在代码中我们是这样实现的:
接口类:
1 //接口类
2 public interfaceIMoneyDiscount {3 BigDecimal discount(BigDecimal original, BigDecimal discount);4 }
第一个实现类(四舍五入):
1 public class HalfUpRound implementsIMoneyDiscount{2
3 @Override4 publicBigDecimal discount(BigDecimal original, BigDecimal discount)