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;
/* */ }
/* */ }
工厂类