Repository: apache/incubator-shardingsphere
Pull request #5021 (2020-03-31 09:30:56)

Refactor OrderedSPI & TypedSPI
For #2477.



Patch:
diff --git a/encrypt-core/encrypt-core-api/src/main/java/org/apache/shardingsphere/encrypt/api/EncryptorRuleConfiguration.java b/encrypt-core/encrypt-core-api/src/main/java/org/apache/shardingsphere/encrypt/api/EncryptorRuleConfiguration.java
index c3d95549f76..9cf7fd49976 100644
--- a/encrypt-core/encrypt-core-api/src/main/java/org/apache/shardingsphere/encrypt/api/EncryptorRuleConfiguration.java
+++ b/encrypt-core/encrypt-core-api/src/main/java/org/apache/shardingsphere/encrypt/api/EncryptorRuleConfiguration.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.encrypt.api;
 
 import lombok.Getter;
-import org.apache.shardingsphere.underlying.common.config.TypeBasedSPIConfiguration;
+import org.apache.shardingsphere.underlying.common.config.TypedSPIConfiguration;
 
 import java.util.Properties;
 
@@ -26,7 +26,7 @@ import java.util.Properties;
  * Encryptor configuration.
  */
 @Getter
-public final class EncryptorRuleConfiguration extends TypeBasedSPIConfiguration {
+public final class EncryptorRuleConfiguration extends TypedSPIConfiguration {
     
     public EncryptorRuleConfiguration(final String type, final Properties properties) {
         super(type, properties);
diff --git a/encrypt-core/encrypt-core-common/src/main/java/org/apache/shardingsphere/encrypt/strategy/spi/Encryptor.java b/encrypt-core/encrypt-core-common/src/main/java/org/apache/shardingsphere/encrypt/strategy/spi/Encryptor.java
index 854f32b33d9..cebcbd868fe 100644
--- a/encrypt-core/encrypt-core-common/src/main/java/org/apache/shardingsphere/encrypt/strategy/spi/Encryptor.java
+++ b/encrypt-core/encrypt-core-common/src/main/java/org/apache/shardingsphere/encrypt/strategy/spi/Encryptor.java
@@ -17,12 +17,12 @@
 
 package org.apache.shardingsphere.encrypt.strategy.spi;
 
-import org.apache.shardingsphere.spi.type.TypeBasedSPI;
+import org.apache.shardingsphere.spi.type.TypedSPI;
 
 /**
  * Encryptor.
  */
-public interface Encryptor extends TypeBasedSPI {
+public interface Encryptor extends TypedSPI {
     
     /**
      * Initialize.
diff --git a/encrypt-core/encrypt-core-common/src/main/java/org/apache/shardingsphere/encrypt/strategy/spi/loader/EncryptorServiceLoader.java b/encrypt-core/encrypt-core-common/src/main/java/org/apache/shardingsphere/encrypt/strategy/spi/loader/EncryptorServiceLoader.java
index 598986486cb..b49a0fb3a68 100644
--- a/encrypt-core/encrypt-core-common/src/main/java/org/apache/shardingsphere/encrypt/strategy/spi/loader/EncryptorServiceLoader.java
+++ b/encrypt-core/encrypt-core-common/src/main/java/org/apache/shardingsphere/encrypt/strategy/spi/loader/EncryptorServiceLoader.java
@@ -18,13 +18,13 @@
 package org.apache.shardingsphere.encrypt.strategy.spi.loader;
 
 import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
-import org.apache.shardingsphere.spi.type.TypeBasedSPIServiceLoader;
+import org.apache.shardingsphere.spi.type.TypedSPIServiceLoader;
 import org.apache.shardingsphere.encrypt.strategy.spi.Encryptor;
 
 /**
  * Encryptor service loader.
  */
-public final class EncryptorServiceLoader extends TypeBasedSPIServiceLoader<Encryptor> {
+public final class EncryptorServiceLoader extends TypedSPIServiceLoader<Encryptor> {
     
     static {
         ShardingSphereServiceLoader.register(Encryptor.class);
@@ -34,4 +34,3 @@ public final class EncryptorServiceLoader extends TypeBasedSPIServiceLoader<Encr
         super(Encryptor.class);
     }
 }
-
diff --git a/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/api/config/masterslave/LoadBalanceStrategyConfiguration.java b/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/api/config/masterslave/LoadBalanceStrategyConfiguration.java
index 24517846348..205ac9fc0e4 100644
--- a/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/api/config/masterslave/LoadBalanceStrategyConfiguration.java
+++ b/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/api/config/masterslave/LoadBalanceStrategyConfiguration.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.api.config.masterslave;
 
 import lombok.Getter;
-import org.apache.shardingsphere.underlying.common.config.TypeBasedSPIConfiguration;
+import org.apache.shardingsphere.underlying.common.config.TypedSPIConfiguration;
 
 import java.util.Properties;
 
@@ -26,7 +26,7 @@ import java.util.Properties;
  * Master-slave load balance strategy configuration.
  */
 @Getter
-public final class LoadBalanceStrategyConfiguration extends TypeBasedSPIConfiguration {
+public final class LoadBalanceStrategyConfiguration extends TypedSPIConfiguration {
     
     public LoadBalanceStrategyConfiguration(final String type) {
         super(type);
diff --git a/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/spi/keygen/KeyGenerateAlgorithm.java b/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/spi/keygen/KeyGenerateAlgorithm.java
index df123044691..6563c178dc9 100644
--- a/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/spi/keygen/KeyGenerateAlgorithm.java
+++ b/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/spi/keygen/KeyGenerateAlgorithm.java
@@ -17,12 +17,12 @@
 
 package org.apache.shardingsphere.spi.keygen;
 
-import org.apache.shardingsphere.spi.type.TypeBasedSPI;
+import org.apache.shardingsphere.spi.type.TypedSPI;
 
 /**
  * Key generate algorithm.
  */
-public interface KeyGenerateAlgorithm extends TypeBasedSPI {
+public interface KeyGenerateAlgorithm extends TypedSPI {
     
     /**
      * Generate key.
diff --git a/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/spi/masterslave/MasterSlaveLoadBalanceAlgorithm.java b/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/spi/masterslave/MasterSlaveLoadBalanceAlgorithm.java
index 05c483e9390..fa7c1b6374b 100644
--- a/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/spi/masterslave/MasterSlaveLoadBalanceAlgorithm.java
+++ b/sharding-core/sharding-core-api/src/main/java/org/apache/shardingsphere/spi/masterslave/MasterSlaveLoadBalanceAlgorithm.java
@@ -17,14 +17,14 @@
 
 package org.apache.shardingsphere.spi.masterslave;
 
-import org.apache.shardingsphere.spi.type.TypeBasedSPI;
+import org.apache.shardingsphere.spi.type.TypedSPI;
 
 import java.util.List;
 
 /**
  * Master-slave database load-balance algorithm.
  */
-public interface MasterSlaveLoadBalanceAlgorithm extends TypeBasedSPI {
+public interface MasterSlaveLoadBalanceAlgorithm extends TypedSPI {
     
     /**
      * Get data source.
diff --git a/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/spi/algorithm/keygen/KeyGenerateAlgorithmServiceLoader.java b/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/spi/algorithm/keygen/KeyGenerateAlgorithmServiceLoader.java
index 0863258b16a..73b95f8ea06 100644
--- a/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/spi/algorithm/keygen/KeyGenerateAlgorithmServiceLoader.java
+++ b/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/spi/algorithm/keygen/KeyGenerateAlgorithmServiceLoader.java
@@ -19,12 +19,12 @@ package org.apache.shardingsphere.spi.algorithm.keygen;
 
 import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.spi.keygen.KeyGenerateAlgorithm;
-import org.apache.shardingsphere.spi.type.TypeBasedSPIServiceLoader;
+import org.apache.shardingsphere.spi.type.TypedSPIServiceLoader;
 
 /**
  * Key generate algorithm service loader.
  */
-public final class KeyGenerateAlgorithmServiceLoader extends TypeBasedSPIServiceLoader<KeyGenerateAlgorithm> {
+public final class KeyGenerateAlgorithmServiceLoader extends TypedSPIServiceLoader<KeyGenerateAlgorithm> {
     
     static {
         ShardingSphereServiceLoader.register(KeyGenerateAlgorithm.class);
diff --git a/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/spi/algorithm/masterslave/MasterSlaveLoadBalanceAlgorithmServiceLoader.java b/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/spi/algorithm/masterslave/MasterSlaveLoadBalanceAlgorithmServiceLoader.java
index cd5b9817f44..6787fc3ea8f 100644
--- a/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/spi/algorithm/masterslave/MasterSlaveLoadBalanceAlgorithmServiceLoader.java
+++ b/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/spi/algorithm/masterslave/MasterSlaveLoadBalanceAlgorithmServiceLoader.java
@@ -18,13 +18,13 @@
 package org.apache.shardingsphere.spi.algorithm.masterslave;
 
 import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
-import org.apache.shardingsphere.spi.type.TypeBasedSPIServiceLoader;
+import org.apache.shardingsphere.spi.type.TypedSPIServiceLoader;
 import org.apache.shardingsphere.spi.masterslave.MasterSlaveLoadBalanceAlgorithm;
 
 /**
  * Master-slave database load-balance algorithm service loader.
  */
-public final class MasterSlaveLoadBalanceAlgorithmServiceLoader extends TypeBasedSPIServiceLoader<MasterSlaveLoadBalanceAlgorithm> {
+public final class MasterSlaveLoadBalanceAlgorithmServiceLoader extends TypedSPIServiceLoader<MasterSlaveLoadBalanceAlgorithm> {
     
     static {
         ShardingSphereServiceLoader.register(MasterSlaveLoadBalanceAlgorithm.class);
diff --git a/sharding-orchestration/sharding-orchestration-center/sharding-orchestration-center-api/src/main/java/org/apache/shardingsphere/orchestration/center/CenterRepository.java b/sharding-orchestration/sharding-orchestration-center/sharding-orchestration-center-api/src/main/java/org/apache/shardingsphere/orchestration/center/CenterRepository.java
index 0c3ada09e85..897c2f5aee3 100644
--- a/sharding-orchestration/sharding-orchestration-center/sharding-orchestration-center-api/src/main/java/org/apache/shardingsphere/orchestration/center/CenterRepository.java
+++ b/sharding-orchestration/sharding-orchestration-center/sharding-orchestration-center-api/src/main/java/org/apache/shardingsphere/orchestration/center/CenterRepository.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.orchestration.center;
 
 import org.apache.shardingsphere.orchestration.center.listener.DataChangedEventListener;
-import org.apache.shardingsphere.spi.type.TypeBasedSPI;
+import org.apache.shardingsphere.spi.type.TypedSPI;
 import org.apache.shardingsphere.orchestration.center.config.CenterConfiguration;
 
 import java.util.List;
@@ -26,7 +26,7 @@ import java.util.List;
 /**
  * An interface for center to get/persist data.
  */
-public interface CenterRepository extends TypeBasedSPI {
+public interface CenterRepository extends TypedSPI {
     
     /**
      * Initialize config center.
diff --git a/sharding-orchestration/sharding-orchestration-center/sharding-orchestration-center-api/src/main/java/org/apache/shardingsphere/orchestration/center/config/CenterConfiguration.java b/sharding-orchestration/sharding-orchestration-center/sharding-orchestration-center-api/src/main/java/org/apache/shardingsphere/orchestration/center/config/CenterConfiguration.java
index 0067f35a1bb..15fc5199ba8 100644
--- a/sharding-orchestration/sharding-orchestration-center/sharding-orchestration-center-api/src/main/java/org/apache/shardingsphere/orchestration/center/config/CenterConfiguration.java
+++ b/sharding-orchestration/sharding-orchestration-center/sharding-orchestration-center-api/src/main/java/org/apache/shardingsphere/orchestration/center/config/CenterConfiguration.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.orchestration.center.config;
 
 import lombok.Getter;
 import lombok.Setter;
-import org.apache.shardingsphere.underlying.common.config.TypeBasedSPIConfiguration;
+import org.apache.shardingsphere.underlying.common.config.TypedSPIConfiguration;
 
 import java.util.Properties;
 
@@ -28,7 +28,7 @@ import java.util.Properties;
  */
 @Getter
 @Setter
-public final class CenterConfiguration extends TypeBasedSPIConfiguration {
+public final class CenterConfiguration extends TypedSPIConfiguration {
     
     /**
      * Type of center, such as config_center, registry_center.
diff --git a/sharding-orchestration/sharding-orchestration-core/sharding-orchestration-core-configcenter/src/main/java/org/apache/shardingsphere/orchestration/core/configcenter/ConfigCenterRepositoryServiceLoader.java b/sharding-orchestration/sharding-orchestration-core/sharding-orchestration-core-configcenter/src/main/java/org/apache/shardingsphere/orchestration/core/configcenter/ConfigCenterRepositoryServiceLoader.java
index be591e04913..fe6d6712c96 100644
--- a/sharding-orchestration/sharding-orchestration-core/sharding-orchestration-core-configcenter/src/main/java/org/apache/shardingsphere/orchestration/core/configcenter/ConfigCenterRepositoryServiceLoader.java
+++ b/sharding-orchestration/sharding-orchestration-core/sharding-orchestration-core-configcenter/src/main/java/org/apache/shardingsphere/orchestration/core/configcenter/ConfigCenterRepositoryServiceLoader.java
@@ -18,26 +18,24 @@
 package org.apache.shardingsphere.orchestration.core.configcenter;
 
 import com.google.common.base.Preconditions;
-import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.orchestration.center.ConfigCenterRepository;
-import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
-import org.apache.shardingsphere.spi.type.TypeBasedSPIServiceLoader;
 import org.apache.shardingsphere.orchestration.center.config.CenterConfiguration;
+import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
+import org.apache.shardingsphere.spi.type.TypedSPIServiceLoader;
 
 /**
  * Config center repository loader from SPI.
  */
-@Slf4j
-public final class ConfigCenterRepositoryServiceLoader extends TypeBasedSPIServiceLoader<ConfigCenterRepository> {
-
+public final class ConfigCenterRepositoryServiceLoader extends TypedSPIServiceLoader<ConfigCenterRepository> {
+    
     static {
         ShardingSphereServiceLoader.register(ConfigCenterRepository.class);
     }
-
+    
     public ConfigCenterRepositoryServiceLoader() {
         super(ConfigCenterRepository.class);
     }
-
+    
     /**
      * Load config center repository from SPI.
      *
diff --git a/sharding-orchestration/sharding-orchestration-core/sharding-orchestration-core-registrycenter/src/main/java/org/apache/shardingsphere/orchestration/core/registrycenter/RegistryCenterRepositoryServiceLoader.java b/sharding-orchestration/sharding-orchestration-core/sharding-orchestration-core-registrycenter/src/main/java/org/apache/shardingsphere/orchestration/core/registrycenter/RegistryCenterRepositoryServiceLoader.java
index 2e63798e220..79460f5ba04 100644
--- a/sharding-orchestration/sharding-orchestration-core/sharding-orchestration-core-registrycenter/src/main/java/org/apache/shardingsphere/orchestration/core/registrycenter/RegistryCenterRepositoryServiceLoader.java
+++ b/sharding-orchestration/sharding-orchestration-core/sharding-orchestration-core-registrycenter/src/main/java/org/apache/shardingsphere/orchestration/core/registrycenter/RegistryCenterRepositoryServiceLoader.java
@@ -21,14 +21,14 @@ import com.google.common.base.Preconditions;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.orchestration.center.RegistryCenterRepository;
 import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
-import org.apache.shardingsphere.spi.type.TypeBasedSPIServiceLoader;
+import org.apache.shardingsphere.spi.type.TypedSPIServiceLoader;
 import org.apache.shardingsphere.orchestration.center.config.CenterConfiguration;
 
 /**
  * Registry center loader from SPI.
  */
 @Slf4j
-public final class RegistryCenterRepositoryServiceLoader extends TypeBasedSPIServiceLoader<RegistryCenterRepository> {
+public final class RegistryCenterRepositoryServiceLoader extends TypedSPIServiceLoader<RegistryCenterRepository> {
     
     static {
         ShardingSphereServiceLoader.register(RegistryCenterRepository.class);
diff --git a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoader.java b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoader.java
index bfcf7cf404e..cc32196729a 100644
--- a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoader.java
+++ b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoader.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.spi;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.spi.exception.ServiceLoaderException;
+import org.apache.shardingsphere.spi.exception.ServiceLoaderInstantiationException;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -75,7 +75,7 @@ public final class ShardingSphereServiceLoader {
         try {
             return clazz.newInstance();
         } catch (final InstantiationException | IllegalAccessException ex) {
-            throw new ServiceLoaderException(clazz, ex);
+            throw new ServiceLoaderInstantiationException(clazz, ex);
         }
     }
 }
diff --git a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/exception/ServiceLoaderException.java b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/exception/ServiceLoaderInstantiationException.java
similarity index 78%
rename from shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/exception/ServiceLoaderException.java
rename to shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/exception/ServiceLoaderInstantiationException.java
index f1b39bf54fb..06c9648ab86 100644
--- a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/exception/ServiceLoaderException.java
+++ b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/exception/ServiceLoaderInstantiationException.java
@@ -18,13 +18,13 @@
 package org.apache.shardingsphere.spi.exception;
 
 /**
- * Service loader exception.
+ * Service loader instantiation exception.
  */
-public final class ServiceLoaderException extends RuntimeException {
+public final class ServiceLoaderInstantiationException extends RuntimeException {
     
     private static final long serialVersionUID = 6261274443437676201L;
     
-    public ServiceLoaderException(final Class<?> clazz, final Exception cause) {
-        super(String.format("Can not find public default constructor for SPI class `%s`", clazz), cause);
+    public ServiceLoaderInstantiationException(final Class<?> clazz, final Exception cause) {
+        super(String.format("Can not find public default constructor for SPI class `%s`", clazz.getName()), cause);
     }
 }
diff --git a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/exception/ServiceProviderNotFoundException.java b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/exception/ServiceProviderNotFoundException.java
new file mode 100644
index 00000000000..2b4a41e4cfa
--- /dev/null
+++ b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/exception/ServiceProviderNotFoundException.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.spi.exception;
+
+/**
+ * Service provider not found exception.
+ */
+public final class ServiceProviderNotFoundException extends RuntimeException {
+    
+    private static final long serialVersionUID = -3730257541332863236L;
+    
+    public ServiceProviderNotFoundException(final Class<?> clazz) {
+        super(String.format("No implementation class load from SPI `%s`.", clazz.getName()));
+    }
+    
+    public ServiceProviderNotFoundException(final Class<?> clazz, final String type) {
+        super(String.format("No implementation class load from SPI `%s` with type `%s`.", clazz.getName(), type));
+    }
+}
diff --git a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/order/OrderBasedSPI.java b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/order/OrderedSPI.java
similarity index 95%
rename from shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/order/OrderBasedSPI.java
rename to shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/order/OrderedSPI.java
index 4ea10badb41..5a11bc07c8d 100644
--- a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/order/OrderBasedSPI.java
+++ b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/order/OrderedSPI.java
@@ -18,11 +18,11 @@
 package org.apache.shardingsphere.spi.order;
 
 /**
- * Order based SPI.
+ * Ordered SPI.
  * 
  * @param <T> type
  */
-public interface OrderBasedSPI<T> {
+public interface OrderedSPI<T> {
     
     /**
      * Get order of load.
diff --git a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/order/OrderedSPIRegistry.java b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/order/OrderedSPIRegistry.java
index e5ee758c8fd..39e0fe8d199 100644
--- a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/order/OrderedSPIRegistry.java
+++ b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/order/OrderedSPIRegistry.java
@@ -31,16 +31,15 @@ public final class OrderedSPIRegistry {
     /**
      * Get registered services.
      * 
-     * @param orderBasedClass class of order based
-     * @param <T> type of order based class
+     * @param orderedSPIClass class of ordered SPI
+     * @param <T> type of ordered SPI class
      * @return registered services
      */
-    public static <T extends OrderBasedSPI> Collection<T> getRegisteredServices(final Class<T> orderBasedClass) {
+    public static <T extends OrderedSPI> Collection<T> getRegisteredServices(final Class<T> orderedSPIClass) {
         Map<Integer, T> result = new TreeMap<>();
-        for (T each : ShardingSphereServiceLoader.newServiceInstances(orderBasedClass)) {
+        for (T each : ShardingSphereServiceLoader.newServiceInstances(orderedSPIClass)) {
             result.put(each.getOrder(), each);
         }
         return result.values();
     }
 }
-
diff --git a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypeBasedSPI.java b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypedSPI.java
similarity index 95%
rename from shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypeBasedSPI.java
rename to shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypedSPI.java
index 447c6103e87..b4d92dbd507 100644
--- a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypeBasedSPI.java
+++ b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypedSPI.java
@@ -20,9 +20,9 @@ package org.apache.shardingsphere.spi.type;
 import java.util.Properties;
 
 /**
- * Type based SPI.
+ * Typed SPI.
  */
-public interface TypeBasedSPI {
+public interface TypedSPI {
     
     /**
      * Get type.
diff --git a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypedSPIRegistry.java b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypedSPIRegistry.java
new file mode 100644
index 00000000000..ed183a291a0
--- /dev/null
+++ b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypedSPIRegistry.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.spi.type;
+
+import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
+import org.apache.shardingsphere.spi.exception.ServiceProviderNotFoundException;
+
+import java.util.Optional;
+import java.util.Properties;
+
+/**
+ * Typed SPI registry.
+ */
+public final class TypedSPIRegistry {
+    
+    /**
+     * Get registered service.
+     * 
+     * @param typedSPIClass typed SPI class
+     * @param type type
+     * @param props properties
+     * @param <T> type
+     * @return registered service
+     */
+    public static <T extends TypedSPI> T getRegisteredService(final Class<T> typedSPIClass, final String type, final Properties props) {
+        Optional<T> serviceInstance = ShardingSphereServiceLoader.newServiceInstances(typedSPIClass).stream().filter(each -> type.equalsIgnoreCase(each.getType())).findFirst();
+        if (serviceInstance.isPresent()) {
+            T result = serviceInstance.get();
+            result.setProperties(props);
+            return result;
+        }
+        throw new ServiceProviderNotFoundException(typedSPIClass, type);
+    }
+    
+    /**
+     * Get registered service.
+     *
+     * @param typedSPIClass typed SPI class
+     * @param <T> type
+     * @return registered service
+     */
+    public static <T extends TypedSPI> T getRegisteredService(final Class<T> typedSPIClass) {
+        Optional<T> serviceInstance = ShardingSphereServiceLoader.newServiceInstances(typedSPIClass).stream().findFirst();
+        if (serviceInstance.isPresent()) {
+            return serviceInstance.get();
+        }
+        throw new ServiceProviderNotFoundException(typedSPIClass);
+    }
+}
diff --git a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypeBasedSPIServiceLoader.java b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypedSPIServiceLoader.java
similarity index 59%
rename from shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypeBasedSPIServiceLoader.java
rename to shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypedSPIServiceLoader.java
index 0f222841e46..78acf2e3f79 100644
--- a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypeBasedSPIServiceLoader.java
+++ b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/type/TypedSPIServiceLoader.java
@@ -17,36 +17,38 @@
 
 package org.apache.shardingsphere.spi.type;
 
-import com.google.common.collect.Collections2;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
+import org.apache.shardingsphere.spi.exception.ServiceProviderNotFoundException;
 
 import java.util.Collection;
+import java.util.Optional;
 import java.util.Properties;
+import java.util.stream.Collectors;
 
 /**
- * Type based SPI service loader.
+ * Typed SPI service loader.
  * 
- * @param <T> type of algorithm class
+ * @param <T> type of SPI class
  */
 @RequiredArgsConstructor
-public abstract class TypeBasedSPIServiceLoader<T extends TypeBasedSPI> {
+public abstract class TypedSPIServiceLoader<T extends TypedSPI> {
     
     private final Class<T> classType;
     
     /**
-     * Create new instance for type based SPI.
+     * Create new instance for typed SPI.
      * 
-     * @param type SPI type
-     * @param props SPI properties
+     * @param type type of SPI
+     * @param props properties of SPI
      * @return SPI instance
      */
     public final T newService(final String type, final Properties props) {
-        Collection<T> typeBasedServices = loadTypeBasedServices(type);
-        if (typeBasedServices.isEmpty()) {
+        Collection<T> typedServices = loadTypedServices(type);
+        if (typedServices.isEmpty()) {
             throw new RuntimeException(String.format("Invalid `%s` SPI type `%s`.", classType.getName(), type));
         }
-        T result = typeBasedServices.iterator().next();
+        T result = typedServices.iterator().next();
         result.setProperties(props);
         return result;
     }
@@ -54,23 +56,23 @@ public abstract class TypeBasedSPIServiceLoader<T extends TypeBasedSPI> {
     /**
      * Create new service by default SPI type.
      *
-     * @return type based SPI instance
+     * @return typed SPI instance
      */
     public final T newService() {
-        T result = loadFirstTypeBasedService();
+        T result = loadFirstTypedService();
         result.setProperties(new Properties());
         return result;
     }
     
-    private Collection<T> loadTypeBasedServices(final String type) {
-        return Collections2.filter(ShardingSphereServiceLoader.newServiceInstances(classType), input -> type.equalsIgnoreCase(input.getType()));
+    private Collection<T> loadTypedServices(final String type) {
+        return ShardingSphereServiceLoader.newServiceInstances(classType).stream().filter(each -> type.equalsIgnoreCase(each.getType())).collect(Collectors.toList());
     }
     
-    private T loadFirstTypeBasedService() {
-        Collection<T> instances = ShardingSphereServiceLoader.newServiceInstances(classType);
-        if (instances.isEmpty()) {
-            throw new RuntimeException(String.format("Invalid `%s` SPI, no implementation class load from SPI.", classType.getName()));
+    private T loadFirstTypedService() {
+        Optional<T> result = ShardingSphereServiceLoader.newServiceInstances(classType).stream().findFirst();
+        if (result.isPresent()) {
+            return result.get();
         }
-        return instances.iterator().next();
+        throw new ServiceProviderNotFoundException(classType);
     }
 }
diff --git a/shardingsphere-underlying/shardingsphere-common/src/main/java/org/apache/shardingsphere/underlying/common/config/TypeBasedSPIConfiguration.java b/shardingsphere-underlying/shardingsphere-common/src/main/java/org/apache/shardingsphere/underlying/common/config/TypedSPIConfiguration.java
similarity index 87%
rename from shardingsphere-underlying/shardingsphere-common/src/main/java/org/apache/shardingsphere/underlying/common/config/TypeBasedSPIConfiguration.java
rename to shardingsphere-underlying/shardingsphere-common/src/main/java/org/apache/shardingsphere/underlying/common/config/TypedSPIConfiguration.java
index 5d7778a062d..199d6795754 100644
--- a/shardingsphere-underlying/shardingsphere-common/src/main/java/org/apache/shardingsphere/underlying/common/config/TypeBasedSPIConfiguration.java
+++ b/shardingsphere-underlying/shardingsphere-common/src/main/java/org/apache/shardingsphere/underlying/common/config/TypedSPIConfiguration.java
@@ -27,17 +27,17 @@ import java.util.Properties;
  * Type based SPI configuration.
  */
 @Getter
-public abstract class TypeBasedSPIConfiguration {
+public abstract class TypedSPIConfiguration {
     
     private final String type;
     
     private final Properties properties;
     
-    public TypeBasedSPIConfiguration(final String type) {
+    public TypedSPIConfiguration(final String type) {
         this(type, null);
     }
     
-    public TypeBasedSPIConfiguration(final String type, final Properties properties) {
+    public TypedSPIConfiguration(final String type, final Properties properties) {
         Preconditions.checkArgument(!Strings.isNullOrEmpty(type), "Type is required.");
         this.type = type;
         this.properties = null == properties ? new Properties() : properties;
diff --git a/shardingsphere-underlying/shardingsphere-merge/src/main/java/org/apache/shardingsphere/underlying/merge/engine/ResultProcessEngine.java b/shardingsphere-underlying/shardingsphere-merge/src/main/java/org/apache/shardingsphere/underlying/merge/engine/ResultProcessEngine.java
index b8f559fee37..4266b561b06 100644
--- a/shardingsphere-underlying/shardingsphere-merge/src/main/java/org/apache/shardingsphere/underlying/merge/engine/ResultProcessEngine.java
+++ b/shardingsphere-underlying/shardingsphere-merge/src/main/java/org/apache/shardingsphere/underlying/merge/engine/ResultProcessEngine.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.underlying.merge.engine;
 
-import org.apache.shardingsphere.spi.order.OrderBasedSPI;
+import org.apache.shardingsphere.spi.order.OrderedSPI;
 import org.apache.shardingsphere.underlying.common.rule.BaseRule;
 
 /**
@@ -25,5 +25,5 @@ import org.apache.shardingsphere.underlying.common.rule.BaseRule;
  * 
  * @param <T> type of rule
  */
-public interface ResultProcessEngine<T extends BaseRule> extends OrderBasedSPI<Class<T>> {
+public interface ResultProcessEngine<T extends BaseRule> extends OrderedSPI<Class<T>> {
 }
diff --git a/shardingsphere-underlying/shardingsphere-rewrite/shardingsphere-rewrite-engine/src/main/java/org/apache/shardingsphere/underlying/rewrite/context/SQLRewriteContextDecorator.java b/shardingsphere-underlying/shardingsphere-rewrite/shardingsphere-rewrite-engine/src/main/java/org/apache/shardingsphere/underlying/rewrite/context/SQLRewriteContextDecorator.java
index 962636c1a1a..e56e0c9698a 100644
--- a/shardingsphere-underlying/shardingsphere-rewrite/shardingsphere-rewrite-engine/src/main/java/org/apache/shardingsphere/underlying/rewrite/context/SQLRewriteContextDecorator.java
+++ b/shardingsphere-underlying/shardingsphere-rewrite/shardingsphere-rewrite-engine/src/main/java/org/apache/shardingsphere/underlying/rewrite/context/SQLRewriteContextDecorator.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.underlying.rewrite.context;
 
-import org.apache.shardingsphere.spi.order.OrderBasedSPI;
+import org.apache.shardingsphere.spi.order.OrderedSPI;
 import org.apache.shardingsphere.underlying.common.config.properties.ConfigurationProperties;
 import org.apache.shardingsphere.underlying.common.rule.BaseRule;
 import org.apache.shardingsphere.underlying.route.context.RouteContext;
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.underlying.route.context.RouteContext;
  *
  * @param <T> type of rule
  */
-public interface SQLRewriteContextDecorator<T extends BaseRule> extends OrderBasedSPI<Class<T>> {
+public interface SQLRewriteContextDecorator<T extends BaseRule> extends OrderedSPI<Class<T>> {
     
     /**
      * Decorate SQL rewrite context.
diff --git a/shardingsphere-underlying/shardingsphere-route/src/main/java/org/apache/shardingsphere/underlying/route/decorator/RouteDecorator.java b/shardingsphere-underlying/shardingsphere-route/src/main/java/org/apache/shardingsphere/underlying/route/decorator/RouteDecorator.java
index fb1fab9cd4e..11966d54b02 100644
--- a/shardingsphere-underlying/shardingsphere-route/src/main/java/org/apache/shardingsphere/underlying/route/decorator/RouteDecorator.java
+++ b/shardingsphere-underlying/shardingsphere-route/src/main/java/org/apache/shardingsphere/underlying/route/decorator/RouteDecorator.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.underlying.route.decorator;
 
-import org.apache.shardingsphere.spi.order.OrderBasedSPI;
+import org.apache.shardingsphere.spi.order.OrderedSPI;
 import org.apache.shardingsphere.underlying.common.config.properties.ConfigurationProperties;
 import org.apache.shardingsphere.underlying.common.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.underlying.common.rule.BaseRule;
@@ -28,7 +28,7 @@ import org.apache.shardingsphere.underlying.route.context.RouteContext;
  * 
  * @param <T> type of rule
  */
-public interface RouteDecorator<T extends BaseRule> extends OrderBasedSPI<Class<T>> {
+public interface RouteDecorator<T extends BaseRule> extends OrderedSPI<Class<T>> {
     
     /**
      * Decorate route context.


Test patch:
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoaderTest.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoaderTest.java
index c48dbd7649b..80be35c3a8d 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoaderTest.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoaderTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.spi;
 
-import org.apache.shardingsphere.spi.fixture.TypeBasedSPIFixture;
+import org.apache.shardingsphere.spi.fixture.TypedSPIFixture;
 import org.junit.Test;
 
 import java.util.Collection;
@@ -37,8 +37,8 @@ public final class ShardingSphereServiceLoaderTest {
     
     @Test
     public void assertNewServiceInstanceWhenIsExist() {
-        ShardingSphereServiceLoader.register(TypeBasedSPIFixture.class);
-        Collection collection = ShardingSphereServiceLoader.newServiceInstances(TypeBasedSPIFixture.class);
+        ShardingSphereServiceLoader.register(TypedSPIFixture.class);
+        Collection collection = ShardingSphereServiceLoader.newServiceInstances(TypedSPIFixture.class);
         assertThat(collection.size(), is(1));
     }
 }
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/TypeBasedSPIServiceLoaderTest.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/TypedSPIServiceLoaderTest.java
similarity index 71%
rename from shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/TypeBasedSPIServiceLoaderTest.java
rename to shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/TypedSPIServiceLoaderTest.java
index 64c0a4277e0..bdb3ea13601 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/TypeBasedSPIServiceLoaderTest.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/TypedSPIServiceLoaderTest.java
@@ -17,9 +17,9 @@
 
 package org.apache.shardingsphere.spi;
 
-import org.apache.shardingsphere.spi.fixture.TypeBasedSPIFixture;
-import org.apache.shardingsphere.spi.fixture.TypeBasedSPIFixtureImpl;
-import org.apache.shardingsphere.spi.fixture.TypeBasedSPIFixtureServiceLoader;
+import org.apache.shardingsphere.spi.fixture.TypedSPIFixture;
+import org.apache.shardingsphere.spi.fixture.TypedSPIFixtureImpl;
+import org.apache.shardingsphere.spi.fixture.TypedSPIFixtureServiceLoader;
 import org.junit.Test;
 
 import java.util.Properties;
@@ -29,23 +29,23 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
-public final class TypeBasedSPIServiceLoaderTest {
+public final class TypedSPIServiceLoaderTest {
     
-    private TypeBasedSPIFixtureServiceLoader serviceLoader = new TypeBasedSPIFixtureServiceLoader();
+    private TypedSPIFixtureServiceLoader serviceLoader = new TypedSPIFixtureServiceLoader();
     
     @Test
     public void assertNewServiceSuccess() {
         Properties properties = new Properties();
         properties.setProperty("key", "value");
-        TypeBasedSPIFixture actual = serviceLoader.newService("FIXTURE", properties);
-        assertThat(actual, instanceOf(TypeBasedSPIFixtureImpl.class));
+        TypedSPIFixture actual = serviceLoader.newService("FIXTURE", properties);
+        assertThat(actual, instanceOf(TypedSPIFixtureImpl.class));
         assertThat(actual.getProperties().getProperty("key"), is("value"));
     }
     
     @Test
     public void assertNewServiceByDefault() {
-        TypeBasedSPIFixture actual = serviceLoader.newService();
-        assertThat(actual, instanceOf(TypeBasedSPIFixtureImpl.class));
+        TypedSPIFixture actual = serviceLoader.newService();
+        assertThat(actual, instanceOf(TypedSPIFixtureImpl.class));
         assertTrue(actual.getProperties().isEmpty());
     }
     
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypeBasedSPIFixture.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypedSPIFixture.java
similarity index 88%
rename from shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypeBasedSPIFixture.java
rename to shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypedSPIFixture.java
index fd891f42f8c..bf84a5a9a17 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypeBasedSPIFixture.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypedSPIFixture.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.spi.fixture;
 
-import org.apache.shardingsphere.spi.type.TypeBasedSPI;
+import org.apache.shardingsphere.spi.type.TypedSPI;
 
-public interface TypeBasedSPIFixture extends TypeBasedSPI {
+public interface TypedSPIFixture extends TypedSPI {
 }
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypeBasedSPIFixtureImpl.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypedSPIFixtureImpl.java
similarity index 93%
rename from shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypeBasedSPIFixtureImpl.java
rename to shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypedSPIFixtureImpl.java
index 7f4cdc5b8bc..c112e1feab9 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypeBasedSPIFixtureImpl.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypedSPIFixtureImpl.java
@@ -24,7 +24,7 @@ import java.util.Properties;
 
 @Getter
 @Setter
-public final class TypeBasedSPIFixtureImpl implements TypeBasedSPIFixture {
+public final class TypedSPIFixtureImpl implements TypedSPIFixture {
     
     private Properties properties;
     
diff --git a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypeBasedSPIFixtureServiceLoader.java b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypedSPIFixtureServiceLoader.java
similarity index 73%
rename from shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypeBasedSPIFixtureServiceLoader.java
rename to shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypedSPIFixtureServiceLoader.java
index 6be91a1e965..e5c6729d7e7 100644
--- a/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypeBasedSPIFixtureServiceLoader.java
+++ b/shardingsphere-spi/src/test/java/org/apache/shardingsphere/spi/fixture/TypedSPIFixtureServiceLoader.java
@@ -18,15 +18,15 @@
 package org.apache.shardingsphere.spi.fixture;
 
 import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
-import org.apache.shardingsphere.spi.type.TypeBasedSPIServiceLoader;
+import org.apache.shardingsphere.spi.type.TypedSPIServiceLoader;
 
-public final class TypeBasedSPIFixtureServiceLoader extends TypeBasedSPIServiceLoader<TypeBasedSPIFixture> {
+public final class TypedSPIFixtureServiceLoader extends TypedSPIServiceLoader<TypedSPIFixture> {
     
     static {
-        ShardingSphereServiceLoader.register(TypeBasedSPIFixture.class);
+        ShardingSphereServiceLoader.register(TypedSPIFixture.class);
     }
     
-    public TypeBasedSPIFixtureServiceLoader() {
-        super(TypeBasedSPIFixture.class);
+    public TypedSPIFixtureServiceLoader() {
+        super(TypedSPIFixture.class);
     }
 }
diff --git a/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.fixture.TypeBasedSPIFixture b/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.fixture.TypedSPIFixture
similarity index 92%
rename from shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.fixture.TypeBasedSPIFixture
rename to shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.fixture.TypedSPIFixture
index 5773e6635c1..a8ea40ce3f7 100644
--- a/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.fixture.TypeBasedSPIFixture
+++ b/shardingsphere-spi/src/test/resources/META-INF/services/org.apache.shardingsphere.spi.fixture.TypedSPIFixture
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.spi.fixture.TypeBasedSPIFixtureImpl
+org.apache.shardingsphere.spi.fixture.TypedSPIFixtureImpl