简单流水号生成器

简单的流水号生成器,可以照顾到并发和多节点部署

@Component
public class SerialNumberGenerator {

    private static Logger log = LogManager.getLogger(SerialNumberGenerator.class.getName());
    
    //系统id,取配置文件中配置参数.多个节点可配置不同参数
    @Value("${credit.system.key}")
    private String systemKey;

    //原子操作类
    private static AtomicInteger count = new AtomicInteger(0);

    public String getSerialNumber() throws BusinessException {
        if(StringUtils.isBlank(systemKey)){
            log.error("SerialNumberGenerator getSerialNumber systemKey is null ");
            throw new BusinessException(ErrorEnum.SYSTEM_ERROR);
        }
        if(count.get() == 10000){
            count.set(0);
        }
        //当前日期
        String currentTime = DateUtils.getDateByFormate(new Date(),DateUtils.DATE_FORMAT);
        //当前值,并补位0
        String currentIndex =String.format("%05d", count.get());
        String serialNumber = systemKey+currentTime+currentIndex;

        log.info("SerialNumberGenerator getSerialNumber is:"+ serialNumber );
        //++
        count.incrementAndGet();
        return serialNumber;
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值