OidGenerator

public abstract interface IOidProvider
{
  public abstract String generatorID(String paramString);
}

接口

/*    */ public class IDGenerator
/*    */ {
/*    */   public static IOidProvider idProvider;
/*    */   
/*    */   public IDGenerator() {}
/*    */   
/*    */   public static String generateObjectID(String module)
/*    */   {
/* 24 */     if (idProvider == null) {
/* 25 */       synchronized (IDGenerator.class) {
/* 26 */         if (idProvider == null) {
/* 27 */           idProvider = IdProviderFactory.getIdProvider();
/*    */         }
/*    */       }
/*    */     }
/*    */     
/* 32 */     return idProvider.generatorID(module);
/*    */   }
/*    */ }

工具

/*    */ public class IdProviderFactory
/*    */ {
/*    */   public static final String ID_PROVIDER_TYPE = "idtype";
/*    */   public static final String ID_PROVIDER_CLASS = "idproviderclass";
/*    */   public static final String IDTYPE_UUID = "uuid";
/*    */   public static final String IDTYPE_REDIS = "redis";
/*    */   public static final String IDTYPE_SNOWFLAKE = "snowflake";
/*    */   public static final String IDTYPE_JXMOID = "jxmoid";
/* 18 */   private static Logger logger = LoggerFactory.getLogger(IdProviderFactory.class);
/*    */   
/*    */   public IdProviderFactory() {}
/*    */   
/* 22 */   public static IOidProvider getIdProvider() { String idProviderClass = PropertyUtil.getPropertyByKey("idproviderclass");
/* 23 */     String genIdType = PropertyUtil.getPropertyByKey("idtype");
/* 24 */     IOidProvider provider = findProvider(idProviderClass, genIdType);
/*    */     
/* 26 */     return provider;
/*    */   }
/*    */   
/*    */   public static IOidProvider getIdProvider(String extenstionType, String providerType) {
/* 30 */     IOidProvider provider = findProvider(extenstionType, providerType);
/*    */     
/* 32 */     return provider;
/*    */   }
/*    */   
/*    */   private static IOidProvider findProvider(String idProviderClass, String genIdType) {
/* 36 */     IOidProvider provider = null;
/* 37 */     if (StringUtils.isNotBlank(idProviderClass)) {
/*    */       try {
/* 39 */         provider = (IOidProvider)Class.forName(idProviderClass).newInstance();
/*    */       } catch (Exception e) {
/* 41 */         logger.error("create custom IOidProvider error! please check config file!", e);
/*    */       }
/*    */       
/* 44 */     } else if (("uuid".equalsIgnoreCase(genIdType)) || (StringUtils.isBlank(genIdType))) {
/* 45 */       provider = new DefaultIdProvider();
/* 46 */     } else if ("snowflake".equalsIgnoreCase(genIdType)) {
/* 47 */       provider = new SnowFlakeProvider();
/* 48 */     } else if ("redis".equalsIgnoreCase(genIdType)) {
/* 49 */       provider = new RedisIdProvider();
/* 50 */     } else if ("jxmoid".equalsIgnoreCase(genIdType)) {
/* 51 */       provider = new JxmIdProvider();
/*    */     }
/*    */     
/*    */ 
/* 55 */     logger.info("get IOidProvider by factory! the provider class is {}.", null == provider ? null : provider.getClass().getName());
/* 56 */     return provider;
/*    */   }
/*    */ }

工厂类


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江晓曼*凡云基地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值