This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new dca5b8cbe70 Refactor TypedSPIRegistry (#23740)
dca5b8cbe70 is described below

commit dca5b8cbe70e7469bd8a6906c8611c9ca63b4900
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jan 27 16:53:12 2023 +0800

    Refactor TypedSPIRegistry (#23740)
    
    * Refactor TypedSPIRegistry
    
    * Refactor TypedSPIRegistry
    
    * Refactor TypedSPIRegistry
    
    * Refactor TypedSPIRegistry
    
    * Refactor TypedSPIRegistry
    
    * Refactor TypedSPIRegistry
    
    * Refactor TypedSPIRegistry
---
 ...AlterDatabaseDiscoveryRuleStatementUpdater.java |  2 +-
 ...reateDatabaseDiscoveryRuleStatementUpdater.java |  2 +-
 .../algorithm/encrypt/AESEncryptAlgorithm.java     |  2 +-
 .../update/AlterEncryptRuleStatementUpdater.java   |  4 +--
 .../update/CreateEncryptRuleStatementUpdater.java  |  2 +-
 .../encrypt/sm/algorithm/SM4EncryptAlgorithm.java  | 16 ++++-----
 .../mask/algorithm/MaskAlgorithmUtil.java          | 18 +++++-----
 .../update/CreateMaskRuleStatementUpdater.java     |  2 +-
 .../update/CreateMaskRuleStatementUpdaterTest.java |  2 +-
 .../rule/ReadwriteSplittingRule.java               |  3 +-
 .../shadow/hint/SimpleHintShadowAlgorithm.java     | 36 +++----------------
 ...lterDefaultShadowAlgorithmStatementUpdater.java |  3 +-
 .../update/AlterShadowRuleStatementUpdater.java    |  2 +-
 ...eateDefaultShadowAlgorithmStatementUpdater.java |  3 +-
 .../update/CreateShadowRuleStatementUpdater.java   |  2 +-
 .../sharding/inline/InlineShardingAlgorithm.java   |  2 +-
 .../shardingsphere/sharding/rule/ShardingRule.java |  3 +-
 .../checker/ShardingTableRuleStatementChecker.java |  5 +--
 .../util/spi/type/typed/TypedSPIRegistry.java      | 41 ++++++++++------------
 .../util/spi/type/typed/TypedSPIRegistryTest.java  | 15 ++------
 .../pipeline/api/config/ImporterConfiguration.java |  4 +--
 .../data/pipeline/cdc/api/impl/CDCJobAPI.java      |  3 +-
 ...RC32MatchDataConsistencyCalculateAlgorithm.java |  2 +-
 ...DataMatchDataConsistencyCalculateAlgorithm.java |  2 +-
 .../datasource/AbstractDataSourceChecker.java      |  2 +-
 .../pipeline/core/importer/DataSourceImporter.java |  2 +-
 .../core/ingest/dumper/InventoryDumper.java        |  2 +-
 .../core/prepare/InventoryTaskSplitter.java        |  4 +--
 .../core/prepare/PipelineJobPreparerUtils.java     |  2 +-
 .../datasource/AbstractDataSourcePreparer.java     |  2 +-
 .../migration/api/impl/MigrationJobAPI.java        |  5 ++-
 .../update/AlterTrafficRuleStatementUpdater.java   |  4 +--
 .../update/CreateTrafficRuleStatementUpdater.java  |  4 +--
 .../xa/XAShardingSphereTransactionManager.java     |  5 ++-
 .../distsql/ral/RALBackendHandlerFactory.java      |  8 ++---
 ...aseDiscoveryRuleConfigurationImportChecker.java |  2 +-
 .../EncryptRuleConfigurationImportChecker.java     |  2 +-
 .../MaskRuleConfigurationImportChecker.java        |  2 +-
 .../ShadowRuleConfigurationImportChecker.java      |  2 +-
 .../distsql/rql/RQLBackendHandlerFactory.java      |  4 +--
 .../proxy/version/ShardingSphereProxyVersion.java  |  3 +-
 .../frontend/netty/ServerHandlerInitializer.java   |  4 +--
 42 files changed, 88 insertions(+), 147 deletions(-)

diff --git 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdater.java
 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdater.java
index 97fa160e172..9396ae7d689 100644
--- 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdater.java
+++ 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdater.java
@@ -87,7 +87,7 @@ public final class AlterDatabaseDiscoveryRuleStatementUpdater 
implements RuleDef
         Map<String, List<DatabaseDiscoveryRuleSegment>> segmentMap = 
sqlStatement.getRules().stream().collect(Collectors.groupingBy(each -> 
each.getClass().getSimpleName()));
         Collection<String> invalidInput = 
segmentMap.getOrDefault(DatabaseDiscoveryRuleSegment.class.getSimpleName(), 
Collections.emptyList()).stream()
                 .map(each -> each.getDiscoveryType().getName()).distinct()
-                .filter(each -> 
!TypedSPIRegistry.findService(DatabaseDiscoveryProviderAlgorithm.class, 
each).isPresent()).collect(Collectors.toList());
+                .filter(each -> 
!TypedSPIRegistry.contains(DatabaseDiscoveryProviderAlgorithm.class, 
each)).collect(Collectors.toList());
         ShardingSpherePreconditions.checkState(invalidInput.isEmpty(), () -> 
new InvalidAlgorithmConfigurationException("database discovery", invalidInput));
     }
     
diff --git 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdater.java
 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdater.java
index 63b4d2ff766..d096f136c2a 100644
--- 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdater.java
+++ 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdater.java
@@ -108,7 +108,7 @@ public final class 
CreateDatabaseDiscoveryRuleStatementUpdater implements RuleDe
         Map<String, List<DatabaseDiscoveryRuleSegment>> segmentMap = 
sqlStatement.getRules().stream().collect(Collectors.groupingBy(each -> 
each.getClass().getSimpleName()));
         Collection<String> invalidInput = 
segmentMap.getOrDefault(DatabaseDiscoveryRuleSegment.class.getSimpleName(), 
Collections.emptyList()).stream()
                 .map(each -> each.getDiscoveryType().getName()).distinct()
-                .filter(each -> 
!TypedSPIRegistry.findService(DatabaseDiscoveryProviderAlgorithm.class, 
each).isPresent()).collect(Collectors.toList());
+                .filter(each -> 
!TypedSPIRegistry.contains(DatabaseDiscoveryProviderAlgorithm.class, 
each)).collect(Collectors.toList());
         ShardingSpherePreconditions.checkState(invalidInput.isEmpty(), () -> 
new InvalidAlgorithmConfigurationException("database discovery", invalidInput));
     }
     
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/encrypt/AESEncryptAlgorithm.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/encrypt/AESEncryptAlgorithm.java
index 379e9768db2..be21ed70348 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/encrypt/AESEncryptAlgorithm.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/algorithm/encrypt/AESEncryptAlgorithm.java
@@ -55,7 +55,7 @@ public final class AESEncryptAlgorithm implements 
StandardEncryptAlgorithm<Objec
     }
     
     private byte[] createSecretKey(final Properties props) {
-        ShardingSpherePreconditions.checkState(props.containsKey(AES_KEY), () 
-> new EncryptAlgorithmInitializationException("AES", String.format("%s can not 
be null.", AES_KEY)));
+        ShardingSpherePreconditions.checkState(props.containsKey(AES_KEY), () 
-> new EncryptAlgorithmInitializationException("AES", String.format("%s can not 
be null", AES_KEY)));
         return Arrays.copyOf(DigestUtils.sha1(props.getProperty(AES_KEY)), 16);
     }
     
diff --git 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
index 3c0522dadad..c39f0bafeab 100644
--- 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
+++ 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
@@ -86,8 +86,8 @@ public final class AlterEncryptRuleStatementUpdater 
implements RuleDefinitionAlt
         for (EncryptRuleSegment each : sqlStatement.getRules()) {
             encryptors.addAll(each.getColumns().stream().map(column -> 
column.getEncryptor().getName()).collect(Collectors.toSet()));
         }
-        Collection<String> invalidEncryptors = encryptors.stream().filter(each 
-> !TypedSPIRegistry.findService(EncryptAlgorithm.class, 
each).isPresent()).collect(Collectors.toList());
-        ShardingSpherePreconditions.checkState(invalidEncryptors.isEmpty(), () 
-> new InvalidAlgorithmConfigurationException("encryptor", invalidEncryptors));
+        Collection<String> notExistedEncryptors = 
encryptors.stream().filter(each -> 
!TypedSPIRegistry.contains(EncryptAlgorithm.class, 
each)).collect(Collectors.toList());
+        ShardingSpherePreconditions.checkState(notExistedEncryptors.isEmpty(), 
() -> new InvalidAlgorithmConfigurationException("encryptor", 
notExistedEncryptors));
     }
     
     @Override
diff --git 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
index b6df34745ec..cf70f310165 100644
--- 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
+++ 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
@@ -95,7 +95,7 @@ public final class CreateEncryptRuleStatementUpdater 
implements RuleDefinitionCr
     private void checkToBeCreatedEncryptors(final CreateEncryptRuleStatement 
sqlStatement) {
         Collection<String> encryptors = new LinkedHashSet<>();
         sqlStatement.getRules().forEach(each -> 
encryptors.addAll(each.getColumns().stream().map(column -> 
column.getEncryptor().getName()).collect(Collectors.toSet())));
-        Collection<String> notExistedEncryptors = 
encryptors.stream().filter(each -> 
!TypedSPIRegistry.findService(EncryptAlgorithm.class, 
each).isPresent()).collect(Collectors.toList());
+        Collection<String> notExistedEncryptors = 
encryptors.stream().filter(each -> 
!TypedSPIRegistry.contains(EncryptAlgorithm.class, 
each)).collect(Collectors.toList());
         ShardingSpherePreconditions.checkState(notExistedEncryptors.isEmpty(), 
() -> new InvalidAlgorithmConfigurationException("encryptor", 
notExistedEncryptors));
     }
     
diff --git 
a/features/encrypt/plugin/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithm.java
 
b/features/encrypt/plugin/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithm.java
index 3ef4e32a58b..c89ff2302f5 100644
--- 
a/features/encrypt/plugin/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithm.java
+++ 
b/features/encrypt/plugin/sm/src/main/java/org/apache/shardingsphere/encrypt/sm/algorithm/SM4EncryptAlgorithm.java
@@ -83,17 +83,17 @@ public final class SM4EncryptAlgorithm implements 
StandardEncryptAlgorithm<Objec
     }
     
     private String createSm4Mode(final Properties props) {
-        ShardingSpherePreconditions.checkState(props.containsKey(SM4_MODE), () 
-> new EncryptAlgorithmInitializationException("SM4", String.format("%s can not 
be null.", SM4_MODE)));
+        ShardingSpherePreconditions.checkState(props.containsKey(SM4_MODE), () 
-> new EncryptAlgorithmInitializationException("SM4", String.format("%s can not 
be null", SM4_MODE)));
         String result = 
String.valueOf(props.getProperty(SM4_MODE)).toUpperCase();
-        ShardingSpherePreconditions.checkState(MODES.contains(result), () -> 
new EncryptAlgorithmInitializationException("SM4", "Mode must be either CBC or 
ECB."));
+        ShardingSpherePreconditions.checkState(MODES.contains(result), () -> 
new EncryptAlgorithmInitializationException("SM4", "Mode must be either CBC or 
ECB"));
         return result;
     }
     
     private byte[] createSm4Key(final Properties props) {
-        ShardingSpherePreconditions.checkState(props.containsKey(SM4_KEY), () 
-> new EncryptAlgorithmInitializationException("SM4", String.format("%s can not 
be null.", SM4_KEY)));
+        ShardingSpherePreconditions.checkState(props.containsKey(SM4_KEY), () 
-> new EncryptAlgorithmInitializationException("SM4", String.format("%s can not 
be null", SM4_KEY)));
         byte[] result = 
ByteUtils.fromHexString(String.valueOf(props.getProperty(SM4_KEY)));
         ShardingSpherePreconditions.checkState(KEY_LENGTH == result.length,
-                () -> new EncryptAlgorithmInitializationException("SM4", "Key 
length must be " + KEY_LENGTH + " bytes long."));
+                () -> new EncryptAlgorithmInitializationException("SM4", "Key 
length must be " + KEY_LENGTH + " bytes long"));
         return result;
     }
     
@@ -101,17 +101,17 @@ public final class SM4EncryptAlgorithm implements 
StandardEncryptAlgorithm<Objec
         if (!"CBC".equalsIgnoreCase(sm4Mode)) {
             return null;
         }
-        ShardingSpherePreconditions.checkState(props.containsKey(SM4_IV), () 
-> new EncryptAlgorithmInitializationException("SM4", String.format("%s can not 
be null.", SM4_IV)));
+        ShardingSpherePreconditions.checkState(props.containsKey(SM4_IV), () 
-> new EncryptAlgorithmInitializationException("SM4", String.format("%s can not 
be null", SM4_IV)));
         String sm4IvValue = String.valueOf(props.getProperty(SM4_IV));
         byte[] result = ByteUtils.fromHexString(sm4IvValue);
-        ShardingSpherePreconditions.checkState(IV_LENGTH == result.length, () 
-> new EncryptAlgorithmInitializationException("SM4", "Iv length must be " + 
IV_LENGTH + " bytes long."));
+        ShardingSpherePreconditions.checkState(IV_LENGTH == result.length, () 
-> new EncryptAlgorithmInitializationException("SM4", "Iv length must be " + 
IV_LENGTH + " bytes long"));
         return result;
     }
     
     private String createSm4Padding(final Properties props) {
-        ShardingSpherePreconditions.checkState(props.containsKey(SM4_PADDING), 
() -> new EncryptAlgorithmInitializationException("SM4", String.format("%s can 
not be null.", SM4_PADDING)));
+        ShardingSpherePreconditions.checkState(props.containsKey(SM4_PADDING), 
() -> new EncryptAlgorithmInitializationException("SM4", String.format("%s can 
not be null", SM4_PADDING)));
         String result = 
String.valueOf(props.getProperty(SM4_PADDING)).toUpperCase().replace("PADDING", 
"Padding");
-        ShardingSpherePreconditions.checkState(PADDINGS.contains(result), () 
-> new EncryptAlgorithmInitializationException("SM4", "Padding must be either 
PKCS5Padding or PKCS7Padding."));
+        ShardingSpherePreconditions.checkState(PADDINGS.contains(result), () 
-> new EncryptAlgorithmInitializationException("SM4", "Padding must be either 
PKCS5Padding or PKCS7Padding"));
         return result;
     }
     
diff --git 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/algorithm/MaskAlgorithmUtil.java
 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/algorithm/MaskAlgorithmUtil.java
index 8964a6e993f..6a00f280d42 100644
--- 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/algorithm/MaskAlgorithmUtil.java
+++ 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/algorithm/MaskAlgorithmUtil.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.mask.algorithm;
 
-import com.google.common.primitives.Ints;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.mask.exception.algorithm.MaskAlgorithmInitializationException;
@@ -28,7 +27,6 @@ import java.util.Properties;
  * Mask algorithm util.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-@SuppressWarnings("UnstableApiUsage")
 public final class MaskAlgorithmUtil {
     
     /**
@@ -40,10 +38,10 @@ public final class MaskAlgorithmUtil {
      */
     public static void checkSingleCharConfig(final Properties props, final 
String singleCharConfigKey, final String maskType) {
         if (!props.containsKey(singleCharConfigKey)) {
-            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s can not be null.", singleCharConfigKey));
+            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s can not be null", singleCharConfigKey));
         }
         if (1 != props.getProperty(singleCharConfigKey).length()) {
-            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s's length must be one.", singleCharConfigKey));
+            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s's length must be one", singleCharConfigKey));
         }
     }
     
@@ -56,10 +54,10 @@ public final class MaskAlgorithmUtil {
      */
     public static void checkAtLeastOneCharConfig(final Properties props, final 
String atLeastOneCharConfigKey, final String maskType) {
         if (!props.containsKey(atLeastOneCharConfigKey)) {
-            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s can not be null.", atLeastOneCharConfigKey));
+            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s can not be null", atLeastOneCharConfigKey));
         }
         if (0 == props.getProperty(atLeastOneCharConfigKey).length()) {
-            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s's length must be at least one.", atLeastOneCharConfigKey));
+            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s's length must be at least one", atLeastOneCharConfigKey));
         }
     }
     
@@ -72,10 +70,12 @@ public final class MaskAlgorithmUtil {
      */
     public static void checkIntegerTypeConfig(final Properties props, final 
String integerTypeConfigKey, final String maskType) {
         if (!props.containsKey(integerTypeConfigKey)) {
-            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s can not be null.", integerTypeConfigKey));
+            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s can not be null", integerTypeConfigKey));
         }
-        if (null == Ints.tryParse(props.getProperty(integerTypeConfigKey))) {
-            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s must be a valid integer number.", integerTypeConfigKey));
+        try {
+            Integer.parseInt(props.getProperty(integerTypeConfigKey));
+        } catch (final NumberFormatException ex) {
+            throw new MaskAlgorithmInitializationException(maskType, 
String.format("%s must be a valid integer number", integerTypeConfigKey));
         }
     }
 }
diff --git 
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdater.java
 
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdater.java
index 74daf41be58..bffa82660d9 100644
--- 
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdater.java
+++ 
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdater.java
@@ -63,7 +63,7 @@ public final class CreateMaskRuleStatementUpdater implements 
RuleDefinitionCreat
     private void checkAlgorithms(final CreateMaskRuleStatement sqlStatement) {
         Collection<MaskColumnSegment> columns = new LinkedList<>();
         sqlStatement.getRules().forEach(each -> 
columns.addAll(each.getColumns()));
-        columns.forEach(each -> 
ShardingSpherePreconditions.checkState(TypedSPIRegistry.findService(MaskAlgorithm.class,
 each.getAlgorithm().getName()).isPresent(),
+        columns.forEach(each -> 
ShardingSpherePreconditions.checkState(TypedSPIRegistry.contains(MaskAlgorithm.class,
 each.getAlgorithm().getName()),
                 () -> new InvalidAlgorithmConfigurationException("mask", 
each.getAlgorithm().getName())));
     }
     
diff --git 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdaterTest.java
 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdaterTest.java
index 6a152f1294f..87859dea2e5 100644
--- 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdaterTest.java
+++ 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdaterTest.java
@@ -79,7 +79,7 @@ public final class CreateMaskRuleStatementUpdaterTest {
         updater.checkSQLStatement(database, sqlStatement, currentRuleConfig);
         MaskRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, sqlStatement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
-        sqlStatement = createSQLStatement(true, "MASK_FROM_X_TO_Y");
+        sqlStatement = createSQLStatement(true, "MD5");
         updater.checkSQLStatement(database, sqlStatement, currentRuleConfig);
         toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, sqlStatement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
index 7fdb8a9b748..a92216b19d3 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
@@ -52,7 +52,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Optional;
-import java.util.Properties;
 import java.util.stream.Collectors;
 
 /**
@@ -81,7 +80,7 @@ public final class ReadwriteSplittingRule implements 
DatabaseRule, DataSourceCon
     private Map<String, ReadwriteSplittingDataSourceRule> 
createReadwriteSplittingDataSourceRules(final 
ReadwriteSplittingDataSourceRuleConfiguration config,
                                                                                
                   final Collection<ShardingSphereRule> builtRules) {
         ReadQueryLoadBalanceAlgorithm loadBalanceAlgorithm = 
loadBalancers.getOrDefault(
-                config.getName() + "." + config.getLoadBalancerName(), 
TypedSPIRegistry.getService(ReadQueryLoadBalanceAlgorithm.class, null, new 
Properties()));
+                config.getName() + "." + config.getLoadBalancerName(), 
TypedSPIRegistry.getService(ReadQueryLoadBalanceAlgorithm.class, null));
         return null == config.getStaticStrategy()
                 ? createDynamicReadwriteSplittingDataSourceRules(config, 
builtRules, loadBalanceAlgorithm)
                 : createStaticReadwriteSplittingDataSourceRules(config, 
builtRules, loadBalanceAlgorithm);
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/algorithm/shadow/hint/SimpleHintShadowAlgorithm.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/algorithm/shadow/hint/SimpleHintShadowAlgorithm.java
index 3691ebac04d..b3045938d03 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/algorithm/shadow/hint/SimpleHintShadowAlgorithm.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/algorithm/shadow/hint/SimpleHintShadowAlgorithm.java
@@ -19,17 +19,12 @@ package 
org.apache.shardingsphere.shadow.algorithm.shadow.hint;
 
 import lombok.Getter;
 import org.apache.shardingsphere.infra.hint.SQLHintExtractor;
-import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
 import org.apache.shardingsphere.shadow.api.shadow.ShadowOperationType;
 import org.apache.shardingsphere.shadow.api.shadow.hint.HintShadowAlgorithm;
 import org.apache.shardingsphere.shadow.api.shadow.hint.PreciseHintShadowValue;
-import 
org.apache.shardingsphere.shadow.exception.algorithm.ShadowAlgorithmInitializationException;
 
 import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.Properties;
-import java.util.Set;
 
 /**
  * Simple hint shadow algorithm.
@@ -37,37 +32,14 @@ import java.util.Set;
 public final class SimpleHintShadowAlgorithm implements 
HintShadowAlgorithm<String> {
     
     @Getter
-    private Properties props;
-    
-    private Map<String, String> simpleHint;
-    
-    @Override
-    public void init(final Properties props) {
-        this.props = props;
-        checkPropsSize(props);
-        simpleHint = initSimpleHint(props);
-    }
-    
-    private Map<String, String> initSimpleHint(final Properties props) {
-        Map<String, String> result = new HashMap<>(props.size(), 1.0f);
-        Set<String> strings = props.stringPropertyNames();
-        for (String each : strings) {
-            result.put(each, props.getProperty(each));
-        }
-        return result;
-    }
-    
-    private void checkPropsSize(final Properties props) {
-        ShardingSpherePreconditions.checkState(!props.isEmpty(), () -> new 
ShadowAlgorithmInitializationException(getType(), "Simple hint shadow algorithm 
props cannot be empty."));
-    }
+    private final Properties props = new Properties();
     
     @Override
     public boolean isShadow(final Collection<String> shadowTableNames, final 
PreciseHintShadowValue<String> noteShadowValue) {
-        if (ShadowOperationType.HINT_MATCH != 
noteShadowValue.getShadowOperationType() && 
!shadowTableNames.contains(noteShadowValue.getLogicTableName())) {
-            return false;
+        if (ShadowOperationType.HINT_MATCH == 
noteShadowValue.getShadowOperationType() || 
shadowTableNames.contains(noteShadowValue.getLogicTableName())) {
+            return new SQLHintExtractor(noteShadowValue.getValue()).isShadow();
         }
-        SQLHintExtractor sqlHintExtractor = new 
SQLHintExtractor(noteShadowValue.getValue());
-        return sqlHintExtractor.isShadow();
+        return false;
     }
     
     @Override
diff --git 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/AlterDefaultShadowAlgorithmStatementUpdater.java
 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/AlterDefaultShadowAlgorithmStatementUpdater.java
index 19dcf04b5cf..f7d7e563717 100644
--- 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/AlterDefaultShadowAlgorithmStatementUpdater.java
+++ 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/AlterDefaultShadowAlgorithmStatementUpdater.java
@@ -83,8 +83,7 @@ public final class 
AlterDefaultShadowAlgorithmStatementUpdater implements RuleDe
     
     private void checkAlgorithmType(final AlgorithmSegment algorithmSegment) {
         String shadowAlgorithmType = algorithmSegment.getName();
-        ShardingSpherePreconditions.checkState(
-                TypedSPIRegistry.findService(ShadowAlgorithm.class, 
shadowAlgorithmType).isPresent(), () -> new 
InvalidAlgorithmConfigurationException("shadow", shadowAlgorithmType));
+        
ShardingSpherePreconditions.checkState(TypedSPIRegistry.contains(ShadowAlgorithm.class,
 shadowAlgorithmType), () -> new 
InvalidAlgorithmConfigurationException("shadow", shadowAlgorithmType));
     }
     
     @Override
diff --git 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/AlterShadowRuleStatementUpdater.java
 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/AlterShadowRuleStatementUpdater.java
index 81dfcdd187e..1fa2f49387d 100644
--- 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/AlterShadowRuleStatementUpdater.java
+++ 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/AlterShadowRuleStatementUpdater.java
@@ -90,7 +90,7 @@ public final class AlterShadowRuleStatementUpdater implements 
RuleDefinitionAlte
     private void checkAlgorithmType(final AlterShadowRuleStatement 
sqlStatement) {
         Collection<String> invalidAlgorithmTypes = 
sqlStatement.getRules().stream().flatMap(each -> 
each.getShadowTableRules().values().stream()).flatMap(Collection::stream)
                 .map(each -> 
each.getAlgorithmSegment().getName()).collect(Collectors.toSet()).stream()
-                .filter(each -> 
!TypedSPIRegistry.findService(ShadowAlgorithm.class, 
each).isPresent()).collect(Collectors.toSet());
+                .filter(each -> 
!TypedSPIRegistry.contains(ShadowAlgorithm.class, 
each)).collect(Collectors.toSet());
         
ShardingSpherePreconditions.checkState(invalidAlgorithmTypes.isEmpty(), () -> 
new InvalidAlgorithmConfigurationException("shadow", invalidAlgorithmTypes));
     }
     
diff --git 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmStatementUpdater.java
 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmStatementUpdater.java
index 7a63d054f7e..1c630dcf63e 100644
--- 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmStatementUpdater.java
+++ 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmStatementUpdater.java
@@ -87,8 +87,7 @@ public final class 
CreateDefaultShadowAlgorithmStatementUpdater implements RuleD
     
     private void checkAlgorithmType(final 
CreateDefaultShadowAlgorithmStatement sqlStatement) {
         String shadowAlgorithmType = 
sqlStatement.getShadowAlgorithmSegment().getAlgorithmSegment().getName();
-        ShardingSpherePreconditions.checkState(
-                TypedSPIRegistry.findService(ShadowAlgorithm.class, 
shadowAlgorithmType).isPresent(), () -> new 
InvalidAlgorithmConfigurationException("shadow", shadowAlgorithmType));
+        
ShardingSpherePreconditions.checkState(TypedSPIRegistry.contains(ShadowAlgorithm.class,
 shadowAlgorithmType), () -> new 
InvalidAlgorithmConfigurationException("shadow", shadowAlgorithmType));
     }
     
     private void checkAlgorithmCompleteness(final Collection<AlgorithmSegment> 
algorithmSegments) {
diff --git 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowRuleStatementUpdater.java
 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowRuleStatementUpdater.java
index 55c5e1c5dd6..adde839ed73 100644
--- 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowRuleStatementUpdater.java
+++ 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowRuleStatementUpdater.java
@@ -94,7 +94,7 @@ public final class CreateShadowRuleStatementUpdater 
implements RuleDefinitionCre
     private void checkAlgorithmType(final Collection<ShadowRuleSegment> 
segments) {
         Collection<String> invalidAlgorithmTypes = 
segments.stream().flatMap(each -> 
each.getShadowTableRules().values().stream()).flatMap(Collection::stream)
                 .map(each -> 
each.getAlgorithmSegment().getName()).collect(Collectors.toSet())
-                .stream().filter(each -> 
!TypedSPIRegistry.findService(ShadowAlgorithm.class, 
each).isPresent()).collect(Collectors.toSet());
+                .stream().filter(each -> 
!TypedSPIRegistry.contains(ShadowAlgorithm.class, 
each)).collect(Collectors.toSet());
         
ShardingSpherePreconditions.checkState(invalidAlgorithmTypes.isEmpty(), () -> 
new InvalidAlgorithmConfigurationException("shadow", invalidAlgorithmTypes));
     }
     
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/inline/InlineShardingAlgorithm.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/inline/InlineShardingAlgorithm.java
index a8baa828d78..08f4f7cb6b7 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/inline/InlineShardingAlgorithm.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/inline/InlineShardingAlgorithm.java
@@ -59,7 +59,7 @@ public final class InlineShardingAlgorithm implements 
StandardShardingAlgorithm<
     private String getAlgorithmExpression(final Properties props) {
         String expression = props.getProperty(ALGORITHM_EXPRESSION_KEY);
         ShardingSpherePreconditions.checkState(null != expression && 
!expression.isEmpty(),
-                () -> new ShardingAlgorithmInitializationException(getType(), 
"Inline sharding algorithm expression cannot be null or empty."));
+                () -> new ShardingAlgorithmInitializationException(getType(), 
"Inline sharding algorithm expression cannot be null or empty"));
         return InlineExpressionParser.handlePlaceHolder(expression.trim());
     }
     
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
index f915add7df9..7984b89115c 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
@@ -75,7 +75,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
-import java.util.Properties;
 import java.util.TreeSet;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -130,7 +129,7 @@ public final class ShardingRule implements DatabaseRule, 
DataNodeContainedRule,
         defaultTableShardingStrategyConfig = null == 
ruleConfig.getDefaultTableShardingStrategy() ? new 
NoneShardingStrategyConfiguration() : 
ruleConfig.getDefaultTableShardingStrategy();
         defaultAuditStrategy = null == ruleConfig.getDefaultAuditStrategy() ? 
new ShardingAuditStrategyConfiguration(Collections.emptyList(), true) : 
ruleConfig.getDefaultAuditStrategy();
         defaultKeyGenerateAlgorithm = null == 
ruleConfig.getDefaultKeyGenerateStrategy()
-                ? TypedSPIRegistry.getService(KeyGenerateAlgorithm.class, 
null, new Properties())
+                ? TypedSPIRegistry.getService(KeyGenerateAlgorithm.class, null)
                 : 
keyGenerators.get(ruleConfig.getDefaultKeyGenerateStrategy().getKeyGeneratorName());
         defaultShardingColumn = ruleConfig.getDefaultShardingColumn();
         shardingTableDataNodes = createShardingTableDataNodes(tableRules);
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
index becf65f980b..ffd0a980982 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java
@@ -272,7 +272,7 @@ public final class ShardingTableRuleStatementChecker {
                     
.map(ShardingAuditorSegment::getAlgorithmSegment).collect(Collectors.toList()).stream().map(AlgorithmSegment::getName).collect(Collectors.toList()));
         }
         Collection<String> invalidAuditors = requiredAuditors.stream()
-                .distinct().filter(each -> 
!TypedSPIRegistry.findService(ShardingAuditAlgorithm.class, 
each).isPresent()).collect(Collectors.toList());
+                .distinct().filter(each -> 
!TypedSPIRegistry.contains(ShardingAuditAlgorithm.class, 
each)).collect(Collectors.toList());
         ShardingSpherePreconditions.checkState(invalidAuditors.isEmpty(), () 
-> new InvalidAlgorithmConfigurationException("auditor", invalidAuditors));
     }
     
@@ -286,7 +286,8 @@ public final class ShardingTableRuleStatementChecker {
     
     private static void checkAutoTableShardingAlgorithms(final 
Collection<AutoTableRuleSegment> rules) {
         rules.forEach(each -> {
-            
ShardingSpherePreconditions.checkState(TypedSPIRegistry.findService(ShardingAlgorithm.class,
 each.getShardingAlgorithmSegment().getName()).isPresent(),
+            
ShardingSpherePreconditions.checkState(TypedSPIRegistry.findService(
+                    ShardingAlgorithm.class, 
each.getShardingAlgorithmSegment().getName(), 
each.getShardingAlgorithmSegment().getProps()).isPresent(),
                     () -> new 
InvalidAlgorithmConfigurationException("sharding", 
each.getShardingAlgorithmSegment().getName()));
             ShardingAlgorithm shardingAlgorithm = 
ShardingSphereAlgorithmFactory.createAlgorithm(
                     new 
AlgorithmConfiguration(each.getShardingAlgorithmSegment().getName(), 
each.getShardingAlgorithmSegment().getProps()), ShardingAlgorithm.class);
diff --git 
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPIRegistry.java
 
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPIRegistry.java
index 6f8c18099b4..33719f5337d 100644
--- 
a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPIRegistry.java
+++ 
b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPIRegistry.java
@@ -52,12 +52,7 @@ public final class TypedSPIRegistry {
      * @return service
      */
     public static <T extends TypedSPI> Optional<T> findService(final Class<T> 
spiClass, final String type) {
-        for (T each : 
ShardingSphereServiceLoader.getServiceInstances(spiClass)) {
-            if (matchesType(type, each)) {
-                return Optional.of(each);
-            }
-        }
-        return getService(spiClass);
+        return findService(spiClass, type, new Properties());
     }
     
     /**
@@ -72,11 +67,22 @@ public final class TypedSPIRegistry {
     public static <T extends TypedSPI> Optional<T> findService(final Class<T> 
spiClass, final String type, final Properties props) {
         for (T each : 
ShardingSphereServiceLoader.getServiceInstances(spiClass)) {
             if (matchesType(type, each)) {
-                each.init(convertToStringTypedProperties(props));
+                each.init(null == props ? new Properties() : 
convertToStringTypedProperties(props));
                 return Optional.of(each);
             }
         }
-        return getService(spiClass);
+        return findService(spiClass);
+    }
+    
+    private static <T extends TypedSPI> Optional<T> findService(final Class<T> 
spiClass) {
+        for (T each : 
ShardingSphereServiceLoader.getServiceInstances(spiClass)) {
+            if (!each.isDefault()) {
+                continue;
+            }
+            each.init(new Properties());
+            return Optional.of(each);
+        }
+        return Optional.empty();
     }
     
     private static boolean matchesType(final String type, final TypedSPI 
instance) {
@@ -84,8 +90,8 @@ public final class TypedSPIRegistry {
     }
     
     private static Properties convertToStringTypedProperties(final Properties 
props) {
-        if (null == props) {
-            return new Properties();
+        if (props.isEmpty()) {
+            return props;
         }
         Properties result = new Properties();
         props.forEach((key, value) -> result.setProperty(key.toString(), null 
== value ? null : value.toString()));
@@ -101,7 +107,7 @@ public final class TypedSPIRegistry {
      * @return service
      */
     public static <T extends TypedSPI> T getService(final Class<T> spiClass, 
final String type) {
-        return findService(spiClass, type).orElseGet(() -> 
getService(spiClass).orElseThrow(() -> new 
ServiceProviderNotFoundServerException(spiClass)));
+        return getService(spiClass, type, new Properties());
     }
     
     /**
@@ -114,17 +120,6 @@ public final class TypedSPIRegistry {
      * @return service
      */
     public static <T extends TypedSPI> T getService(final Class<T> spiClass, 
final String type, final Properties props) {
-        return findService(spiClass, type, props).orElseGet(() -> 
getService(spiClass).orElseThrow(() -> new 
ServiceProviderNotFoundServerException(spiClass)));
-    }
-    
-    private static <T extends TypedSPI> Optional<T> getService(final Class<T> 
spiClass) {
-        for (T each : 
ShardingSphereServiceLoader.getServiceInstances(spiClass)) {
-            if (!each.isDefault()) {
-                continue;
-            }
-            each.init(new Properties());
-            return Optional.of(each);
-        }
-        return Optional.empty();
+        return findService(spiClass, type, props).orElseGet(() -> 
findService(spiClass).orElseThrow(() -> new 
ServiceProviderNotFoundServerException(spiClass)));
     }
 }
diff --git 
a/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPIRegistryTest.java
 
b/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPIRegistryTest.java
index dafa3600775..9769d6128ab 100644
--- 
a/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPIRegistryTest.java
+++ 
b/infra/util/src/test/java/org/apache/shardingsphere/infra/util/spi/type/typed/TypedSPIRegistryTest.java
@@ -30,7 +30,6 @@ import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 public final class TypedSPIRegistryTest {
@@ -55,23 +54,13 @@ public final class TypedSPIRegistryTest {
         assertThat(((TypedSPIFixtureImpl) 
TypedSPIRegistry.getService(TypedSPIFixture.class, "TYPED.FIXTURE", 
PropertiesBuilder.build(new Property("key", "1")))).getValue(), is("1"));
     }
     
-    @Test
-    public void assertGetServiceWithNullProperties() {
-        assertNull(((TypedSPIFixtureImpl) 
TypedSPIRegistry.getService(TypedSPIFixture.class, "TYPED.FIXTURE", 
null)).getValue());
-    }
-    
     @Test
     public void assertGetServiceWithAlias() {
-        assertNotNull(TypedSPIRegistry.getService(TypedSPIFixture.class, 
"TYPED.ALIAS", new Properties()));
+        assertNotNull(TypedSPIRegistry.getService(TypedSPIFixture.class, 
"TYPED.ALIAS"));
     }
     
     @Test(expected = ServiceProviderNotFoundServerException.class)
-    public void assertGetServiceWithoutPropertiesWhenTypeIsNotExist() {
+    public void assertGetServiceWhenTypeIsNotExist() {
         TypedSPIRegistry.getService(TypedSPIFixture.class, "NOT_EXISTED");
     }
-    
-    @Test(expected = ServiceProviderNotFoundServerException.class)
-    public void assertGetServiceWithPropertiesWhenTypeIsNotExist() {
-        TypedSPIRegistry.getService(TypedSPIFixture.class, "NOT_EXISTED", new 
Properties());
-    }
 }
diff --git 
a/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/config/ImporterConfiguration.java
 
b/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/config/ImporterConfiguration.java
index f7a33a66ec4..32bf83b5050 100644
--- 
a/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/config/ImporterConfiguration.java
+++ 
b/kernel/data-pipeline/api/src/main/java/org/apache/shardingsphere/data/pipeline/api/config/ImporterConfiguration.java
@@ -81,8 +81,6 @@ public final class ImporterConfiguration {
      * @return schema name. nullable
      */
     public String getSchemaName(final LogicTableName logicTableName) {
-        return TypedSPIRegistry.getService(DatabaseType.class, 
dataSourceConfig.getDatabaseType().getType()).isSchemaAvailable()
-                ? tableNameSchemaNameMapping.getSchemaName(logicTableName)
-                : null;
+        return TypedSPIRegistry.getService(DatabaseType.class, 
dataSourceConfig.getDatabaseType().getType()).isSchemaAvailable() ? 
tableNameSchemaNameMapping.getSchemaName(logicTableName) : null;
     }
 }
diff --git 
a/kernel/data-pipeline/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/api/impl/CDCJobAPI.java
 
b/kernel/data-pipeline/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/api/impl/CDCJobAPI.java
index 09e8aac196e..c9f7c81fd6c 100644
--- 
a/kernel/data-pipeline/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/api/impl/CDCJobAPI.java
+++ 
b/kernel/data-pipeline/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/api/impl/CDCJobAPI.java
@@ -81,7 +81,6 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Properties;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -206,7 +205,7 @@ public final class CDCJobAPI extends 
AbstractInventoryIncrementalJobAPIImpl {
         CDCProcessContext processContext = new 
CDCProcessContext(jobConfig.getJobId(), pipelineProcessConfig);
         JobRateLimitAlgorithm writeRateLimitAlgorithm = 
processContext.getWriteRateLimitAlgorithm();
         int batchSize = pipelineProcessConfig.getWrite().getBatchSize();
-        Map<LogicTableName, Set<String>> shardingColumnsMap = 
TypedSPIRegistry.getService(ShardingColumnsExtractor.class, "Sharding", new 
Properties())
+        Map<LogicTableName, Set<String>> shardingColumnsMap = 
TypedSPIRegistry.getService(ShardingColumnsExtractor.class, "Sharding")
                 
.getShardingColumnsMap(jobConfig.getDataSourceConfig().getRootConfig().getRules(),
 
logicalTableNames.stream().map(LogicTableName::new).collect(Collectors.toSet()));
         return new ImporterConfiguration(dataSourceConfig, shardingColumnsMap, 
tableNameSchemaNameMapping, batchSize, writeRateLimitAlgorithm, 0, 1);
     }
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/CRC32MatchDataConsistencyCalculateAlgorithm.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/CRC32MatchDataConsistencyCalculateAlgorithm.java
index 36860e88bfe..ebed28663f9 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/CRC32MatchDataConsistencyCalculateAlgorithm.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/CRC32MatchDataConsistencyCalculateAlgorithm.java
@@ -60,7 +60,7 @@ public final class 
CRC32MatchDataConsistencyCalculateAlgorithm extends AbstractD
     
     @Override
     public Iterable<DataConsistencyCalculatedResult> calculate(final 
DataConsistencyCalculateParameter param) {
-        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, param.getDatabaseType(), 
null);
+        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, param.getDatabaseType());
         List<CalculatedItem> calculatedItems = 
param.getColumnNames().stream().map(each -> calculateCRC32(sqlBuilder, param, 
each)).collect(Collectors.toList());
         return Collections.singletonList(new 
CalculatedResult(calculatedItems.get(0).getRecordsCount(), 
calculatedItems.stream().map(CalculatedItem::getCrc32).collect(Collectors.toList())));
     }
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithm.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithm.java
index 8949ddc70ac..20f7256bf15 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithm.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithm.java
@@ -135,7 +135,7 @@ public final class 
DataMatchDataConsistencyCalculateAlgorithm extends AbstractSt
     }
     
     private String getQuerySQL(final DataConsistencyCalculateParameter param) {
-        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, param.getDatabaseType(), 
null);
+        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, param.getDatabaseType());
         String logicTableName = param.getLogicTableName();
         String schemaName = param.getSchemaName();
         String uniqueKey = param.getUniqueKey().getName();
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/datasource/AbstractDataSourceChecker.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/datasource/AbstractDataSourceChecker.java
index d8ddadae9dd..1f7b036d610 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/datasource/AbstractDataSourceChecker.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/datasource/AbstractDataSourceChecker.java
@@ -65,7 +65,7 @@ public abstract class AbstractDataSourceChecker implements 
DataSourceChecker {
     }
     
     private boolean checkEmpty(final DataSource dataSource, final String 
schemaName, final String tableName) throws SQLException {
-        String sql = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
getDatabaseType(), null).buildCheckEmptySQL(schemaName, tableName);
+        String sql = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
getDatabaseType()).buildCheckEmptySQL(schemaName, tableName);
         try (
                 Connection connection = dataSource.getConnection();
                 PreparedStatement preparedStatement = 
connection.prepareStatement(sql);
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/importer/DataSourceImporter.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/importer/DataSourceImporter.java
index 234981f576a..d1e4fc31d93 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/importer/DataSourceImporter.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/importer/DataSourceImporter.java
@@ -86,7 +86,7 @@ public final class DataSourceImporter extends 
AbstractLifecycleExecutor implemen
         rateLimitAlgorithm = importerConfig.getRateLimitAlgorithm();
         this.dataSourceManager = (PipelineDataSourceManager) 
importerConnector.getConnector();
         this.channel = channel;
-        pipelineSqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
importerConfig.getDataSourceConfig().getDatabaseType().getType(), null);
+        pipelineSqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
importerConfig.getDataSourceConfig().getDatabaseType().getType());
         this.jobProgressListener = jobProgressListener;
     }
     
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/ingest/dumper/InventoryDumper.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/ingest/dumper/InventoryDumper.java
index 8f9bcab169b..366bd2b64f9 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/ingest/dumper/InventoryDumper.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/ingest/dumper/InventoryDumper.java
@@ -83,7 +83,7 @@ public final class InventoryDumper extends 
AbstractLifecycleExecutor implements
         this.dumperConfig = dumperConfig;
         this.channel = channel;
         this.dataSource = dataSource;
-        sqlBuilder = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
dumperConfig.getDataSourceConfig().getDatabaseType().getType(), null);
+        sqlBuilder = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
dumperConfig.getDataSourceConfig().getDatabaseType().getType());
         columnValueReader = 
TypedSPIRegistry.getService(ColumnValueReader.class, 
dumperConfig.getDataSourceConfig().getDatabaseType().getType());
         this.metaDataLoader = metaDataLoader;
     }
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/InventoryTaskSplitter.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/InventoryTaskSplitter.java
index aa2c502722f..761a5809327 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/InventoryTaskSplitter.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/InventoryTaskSplitter.java
@@ -159,7 +159,7 @@ public final class InventoryTaskSplitter {
                                                                               
final InventoryDumperConfiguration dumperConfig) {
         Collection<IngestPosition<?>> result = new LinkedList<>();
         PipelineJobConfiguration jobConfig = jobItemContext.getJobConfig();
-        String sql = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
jobConfig.getSourceDatabaseType(), null)
+        String sql = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
jobConfig.getSourceDatabaseType())
                 .buildSplitByPrimaryKeyRangeSQL(dumperConfig.getSchemaName(new 
LogicTableName(dumperConfig.getLogicTableName())), 
dumperConfig.getActualTableName(), dumperConfig.getUniqueKey());
         int shardingSize = 
jobItemContext.getJobProcessContext().getPipelineProcessConfig().getRead().getShardingSize();
         try (
@@ -200,7 +200,7 @@ public final class InventoryTaskSplitter {
         PipelineJobConfiguration jobConfig = jobItemContext.getJobConfig();
         String schemaName = dumperConfig.getSchemaName(new 
LogicTableName(dumperConfig.getLogicTableName()));
         String actualTableName = dumperConfig.getActualTableName();
-        String sql = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
jobConfig.getSourceDatabaseType(), null).buildCountSQL(schemaName, 
actualTableName);
+        String sql = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
jobConfig.getSourceDatabaseType()).buildCountSQL(schemaName, actualTableName);
         try (
                 Connection connection = dataSource.getConnection();
                 PreparedStatement preparedStatement = 
connection.prepareStatement(sql)) {
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/PipelineJobPreparerUtils.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/PipelineJobPreparerUtils.java
index 669c31659ef..0355d795d54 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/PipelineJobPreparerUtils.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/PipelineJobPreparerUtils.java
@@ -63,7 +63,7 @@ public final class PipelineJobPreparerUtils {
      * @return true if supported, otherwise false
      */
     public static boolean isIncrementalSupported(final String databaseType) {
-        return TypedSPIRegistry.findService(IncrementalDumperCreator.class, 
databaseType).isPresent();
+        return TypedSPIRegistry.contains(IncrementalDumperCreator.class, 
databaseType);
     }
     
     /**
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/datasource/AbstractDataSourcePreparer.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/datasource/AbstractDataSourcePreparer.java
index 5cd0044e2cc..51612a9ff67 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/datasource/AbstractDataSourcePreparer.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/prepare/datasource/AbstractDataSourcePreparer.java
@@ -60,7 +60,7 @@ public abstract class AbstractDataSourcePreparer implements 
DataSourcePreparer {
         }
         CreateTableConfiguration createTableConfig = 
param.getCreateTableConfig();
         String defaultSchema = 
DatabaseTypeEngine.getDefaultSchemaName(targetDatabaseType).orElse(null);
-        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
targetDatabaseType.getType(), null);
+        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
targetDatabaseType.getType());
         Collection<String> createdSchemaNames = new HashSet<>();
         for (CreateTableEntry each : 
createTableConfig.getCreateTableEntries()) {
             String targetSchemaName = 
each.getTargetName().getSchemaName().getOriginal();
diff --git 
a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
 
b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
index 88a9d76b6cd..bac5e76093d 100644
--- 
a/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
+++ 
b/kernel/data-pipeline/scenario/migration/src/main/java/org/apache/shardingsphere/data/pipeline/scenario/migration/api/impl/MigrationJobAPI.java
@@ -108,7 +108,6 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Properties;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -196,7 +195,7 @@ public final class MigrationJobAPI extends 
AbstractInventoryIncrementalJobAPIImp
         TableNameSchemaNameMapping tableNameSchemaNameMapping = new 
TableNameSchemaNameMapping(tableNameSchemaMap);
         CreateTableConfiguration createTableConfig = 
buildCreateTableConfiguration(jobConfig);
         DumperConfiguration dumperConfig = 
buildDumperConfiguration(jobConfig.getJobId(), 
jobConfig.getSourceResourceName(), jobConfig.getSource(), tableNameMap, 
tableNameSchemaNameMapping);
-        Map<LogicTableName, Set<String>> shardingColumnsMap = 
TypedSPIRegistry.getService(ShardingColumnsExtractor.class, "Sharding", new 
Properties()).getShardingColumnsMap(
+        Map<LogicTableName, Set<String>> shardingColumnsMap = 
TypedSPIRegistry.getService(ShardingColumnsExtractor.class, 
"Sharding").getShardingColumnsMap(
                 ((ShardingSpherePipelineDataSourceConfiguration) 
jobConfig.getTarget()).getRootConfig().getRules(), Collections.singleton(new 
LogicTableName(jobConfig.getTargetTableName())));
         ImporterConfiguration importerConfig = 
buildImporterConfiguration(jobConfig, pipelineProcessConfig, 
shardingColumnsMap, tableNameSchemaNameMapping);
         return new 
MigrationTaskConfiguration(jobConfig.getSourceResourceName(), 
createTableConfig, dumperConfig, importerConfig);
@@ -312,7 +311,7 @@ public final class MigrationJobAPI extends 
AbstractInventoryIncrementalJobAPIImp
         String targetTableName = jobConfig.getTargetTableName();
         // TODO use jobConfig.targetSchemaName
         String targetSchemaName = jobConfig.getSourceSchemaName();
-        PipelineSQLBuilder pipelineSQLBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
jobConfig.getTargetDatabaseType(), null);
+        PipelineSQLBuilder pipelineSQLBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
jobConfig.getTargetDatabaseType());
         try (
                 PipelineDataSourceWrapper dataSource = 
PipelineDataSourceFactory.newInstance(jobConfig.getTarget());
                 Connection connection = dataSource.getConnection()) {
diff --git 
a/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/update/AlterTrafficRuleStatementUpdater.java
 
b/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/update/AlterTrafficRuleStatementUpdater.java
index 74719ae7d4f..306fed10baf 100644
--- 
a/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/update/AlterTrafficRuleStatementUpdater.java
+++ 
b/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/update/AlterTrafficRuleStatementUpdater.java
@@ -79,10 +79,10 @@ public final class AlterTrafficRuleStatementUpdater 
implements GlobalRuleRALUpda
     private Collection<String> getInvalidAlgorithmNames(final 
AlterTrafficRuleStatement sqlStatement) {
         Collection<String> result = new LinkedList<>();
         for (TrafficRuleSegment each : sqlStatement.getSegments()) {
-            if (!TypedSPIRegistry.findService(TrafficAlgorithm.class, 
each.getAlgorithm().getName()).isPresent()) {
+            if (!TypedSPIRegistry.contains(TrafficAlgorithm.class, 
each.getAlgorithm().getName())) {
                 result.add(each.getAlgorithm().getName());
             }
-            if (null != each.getLoadBalancer() && 
!TypedSPIRegistry.findService(TrafficLoadBalanceAlgorithm.class, 
each.getLoadBalancer().getName()).isPresent()) {
+            if (null != each.getLoadBalancer() && 
!TypedSPIRegistry.contains(TrafficLoadBalanceAlgorithm.class, 
each.getLoadBalancer().getName())) {
                 result.add(each.getLoadBalancer().getName());
             }
         }
diff --git 
a/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/update/CreateTrafficRuleStatementUpdater.java
 
b/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/update/CreateTrafficRuleStatementUpdater.java
index 1826eb20e43..fa48f7465c6 100644
--- 
a/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/update/CreateTrafficRuleStatementUpdater.java
+++ 
b/kernel/traffic/distsql/handler/src/main/java/org/apache/shardingsphere/traffic/distsql/handler/update/CreateTrafficRuleStatementUpdater.java
@@ -79,10 +79,10 @@ public final class CreateTrafficRuleStatementUpdater 
implements GlobalRuleRALUpd
     private Collection<String> getInvalidAlgorithmNames(final 
CreateTrafficRuleStatement sqlStatement) {
         Collection<String> result = new LinkedList<>();
         for (TrafficRuleSegment each : sqlStatement.getSegments()) {
-            if (!TypedSPIRegistry.findService(TrafficAlgorithm.class, 
each.getAlgorithm().getName()).isPresent()) {
+            if (!TypedSPIRegistry.contains(TrafficAlgorithm.class, 
each.getAlgorithm().getName())) {
                 result.add(each.getAlgorithm().getName());
             }
-            if (null != each.getLoadBalancer() && 
!TypedSPIRegistry.findService(TrafficLoadBalanceAlgorithm.class, 
each.getLoadBalancer().getName()).isPresent()) {
+            if (null != each.getLoadBalancer() && 
!TypedSPIRegistry.contains(TrafficLoadBalanceAlgorithm.class, 
each.getLoadBalancer().getName())) {
                 result.add(each.getLoadBalancer().getName());
             }
         }
diff --git 
a/kernel/transaction/type/xa/core/src/main/java/org/apache/shardingsphere/transaction/xa/XAShardingSphereTransactionManager.java
 
b/kernel/transaction/type/xa/core/src/main/java/org/apache/shardingsphere/transaction/xa/XAShardingSphereTransactionManager.java
index 1562fd2ed58..9ab0b2d5559 100644
--- 
a/kernel/transaction/type/xa/core/src/main/java/org/apache/shardingsphere/transaction/xa/XAShardingSphereTransactionManager.java
+++ 
b/kernel/transaction/type/xa/core/src/main/java/org/apache/shardingsphere/transaction/xa/XAShardingSphereTransactionManager.java
@@ -42,7 +42,6 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Properties;
 
 /**
  * ShardingSphere Transaction manager for XA.
@@ -55,7 +54,7 @@ public final class XAShardingSphereTransactionManager 
implements ShardingSphereT
     
     @Override
     public void init(final Map<String, DatabaseType> databaseTypes, final 
Map<String, DataSource> dataSources, final String providerType) {
-        xaTransactionManagerProvider = 
TypedSPIRegistry.getService(XATransactionManagerProvider.class, providerType, 
new Properties());
+        xaTransactionManagerProvider = 
TypedSPIRegistry.getService(XATransactionManagerProvider.class, providerType);
         xaTransactionManagerProvider.init();
         Map<String, ResourceDataSource> resourceDataSources = 
getResourceDataSources(dataSources);
         resourceDataSources.forEach((key, value) -> 
cachedDataSources.put(value.getOriginalName(), 
newXATransactionDataSource(databaseTypes.get(key), value)));
@@ -139,6 +138,6 @@ public final class XAShardingSphereTransactionManager 
implements ShardingSphereT
     
     @Override
     public boolean containsProviderType(final String providerType) {
-        return 
TypedSPIRegistry.findService(XATransactionManagerProvider.class, 
providerType).isPresent();
+        return TypedSPIRegistry.contains(XATransactionManagerProvider.class, 
providerType);
     }
 }
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
index ddca38be230..bd0d381a06a 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
@@ -80,7 +80,6 @@ import 
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.sta
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Properties;
 
 /**
  * RAL backend handler factory.
@@ -126,18 +125,17 @@ public final class RALBackendHandlerFactory {
         }
         if (sqlStatement instanceof QueryableScalingRALStatement) {
             return new 
QueryableScalingRALBackendHandler((QueryableScalingRALStatement) sqlStatement,
-                    (DatabaseDistSQLResultSet) 
TypedSPIRegistry.getService(DistSQLResultSet.class, 
sqlStatement.getClass().getCanonicalName(), new Properties()));
+                    (DatabaseDistSQLResultSet) 
TypedSPIRegistry.getService(DistSQLResultSet.class, 
sqlStatement.getClass().getCanonicalName()));
         }
         if (sqlStatement instanceof UpdatableScalingRALStatement) {
             return new 
UpdatableScalingRALBackendHandler((UpdatableScalingRALStatement) sqlStatement, 
connectionSession);
         }
         if (sqlStatement instanceof QueryableGlobalRuleRALStatement) {
             return new QueryableGlobalRuleRALBackendHandler(sqlStatement,
-                    (GlobalRuleDistSQLResultSet) 
TypedSPIRegistry.getService(DistSQLResultSet.class, 
sqlStatement.getClass().getCanonicalName(), new Properties()));
+                    (GlobalRuleDistSQLResultSet) 
TypedSPIRegistry.getService(DistSQLResultSet.class, 
sqlStatement.getClass().getCanonicalName()));
         }
         if (sqlStatement instanceof UpdatableGlobalRuleRALStatement) {
-            return new UpdatableGlobalRuleRALBackendHandler(sqlStatement,
-                    TypedSPIRegistry.getService(GlobalRuleRALUpdater.class, 
sqlStatement.getClass().getCanonicalName(), new Properties()));
+            return new UpdatableGlobalRuleRALBackendHandler(sqlStatement, 
TypedSPIRegistry.getService(GlobalRuleRALUpdater.class, 
sqlStatement.getClass().getCanonicalName()));
         }
         return createRALBackendHandler(sqlStatement, connectionSession);
     }
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/DatabaseDiscoveryRuleConfigurationImportChecker.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/DatabaseDiscoveryRuleConfigurationImportChecker.java
index 5e830e6888d..0f70743acaa 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/DatabaseDiscoveryRuleConfigurationImportChecker.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/DatabaseDiscoveryRuleConfigurationImportChecker.java
@@ -62,7 +62,7 @@ public final class 
DatabaseDiscoveryRuleConfigurationImportChecker {
     
     private void checkDiscoverTypeAndHeartbeat(final String databaseName, 
final DatabaseDiscoveryRuleConfiguration currentRuleConfig) {
         Collection<String> invalidInput = 
currentRuleConfig.getDiscoveryTypes().values().stream().map(AlgorithmConfiguration::getType)
-                .filter(each -> 
!TypedSPIRegistry.findService(DatabaseDiscoveryProviderAlgorithm.class, 
each).isPresent()).collect(Collectors.toList());
+                .filter(each -> 
!TypedSPIRegistry.contains(DatabaseDiscoveryProviderAlgorithm.class, 
each)).collect(Collectors.toList());
         ShardingSpherePreconditions.checkState(invalidInput.isEmpty(), () -> 
new InvalidAlgorithmConfigurationException(DB_DISCOVERY.toLowerCase(), 
invalidInput));
         currentRuleConfig.getDataSources().forEach(each -> {
             if 
(!currentRuleConfig.getDiscoveryTypes().containsKey(each.getDiscoveryTypeName()))
 {
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/EncryptRuleConfigurationImportChecker.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/EncryptRuleConfigurationImportChecker.java
index 386b49d7610..23495d1ac6f 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/EncryptRuleConfigurationImportChecker.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/EncryptRuleConfigurationImportChecker.java
@@ -63,7 +63,7 @@ public final class EncryptRuleConfigurationImportChecker {
     
     private void checkEncryptors(final EncryptRuleConfiguration 
currentRuleConfig) {
         Collection<String> notExistedAlgorithms = 
currentRuleConfig.getEncryptors().values().stream().map(AlgorithmConfiguration::getType)
-                .filter(each -> 
!TypedSPIRegistry.findService(EncryptAlgorithm.class, 
each).isPresent()).collect(Collectors.toList());
+                .filter(each -> 
!TypedSPIRegistry.contains(EncryptAlgorithm.class, 
each)).collect(Collectors.toList());
         ShardingSpherePreconditions.checkState(notExistedAlgorithms.isEmpty(), 
() -> new InvalidAlgorithmConfigurationException("Encryptors", 
notExistedAlgorithms));
     }
     
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/MaskRuleConfigurationImportChecker.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/MaskRuleConfigurationImportChecker.java
index 40e7fec6922..4a6f48189b4 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/MaskRuleConfigurationImportChecker.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/MaskRuleConfigurationImportChecker.java
@@ -63,7 +63,7 @@ public final class MaskRuleConfigurationImportChecker {
     
     private void checkMaskAlgorithms(final MaskRuleConfiguration 
currentRuleConfig) {
         Collection<String> notExistedAlgorithms = 
currentRuleConfig.getMaskAlgorithms().values().stream().map(AlgorithmConfiguration::getType)
-                .filter(each -> 
!TypedSPIRegistry.findService(MaskAlgorithm.class, 
each).isPresent()).collect(Collectors.toList());
+                .filter(each -> 
!TypedSPIRegistry.contains(MaskAlgorithm.class, 
each)).collect(Collectors.toList());
         ShardingSpherePreconditions.checkState(notExistedAlgorithms.isEmpty(), 
() -> new InvalidAlgorithmConfigurationException("Mask algorithms", 
notExistedAlgorithms));
     }
     
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/ShadowRuleConfigurationImportChecker.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/ShadowRuleConfigurationImportChecker.java
index 00d7a8107d2..2be7822e17a 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/ShadowRuleConfigurationImportChecker.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/common/checker/ShadowRuleConfigurationImportChecker.java
@@ -89,7 +89,7 @@ public final class ShadowRuleConfigurationImportChecker {
     
     private void checkShadowAlgorithms(final ShadowRuleConfiguration 
currentRuleConfig) {
         Collection<String> notExistedAlgorithms = 
currentRuleConfig.getShadowAlgorithms().values().stream().map(AlgorithmConfiguration::getType)
-                .filter(each -> 
!TypedSPIRegistry.findService(ShadowAlgorithm.class, 
each).isPresent()).collect(Collectors.toList());
+                .filter(each -> 
!TypedSPIRegistry.contains(ShadowAlgorithm.class, 
each)).collect(Collectors.toList());
         ShardingSpherePreconditions.checkState(notExistedAlgorithms.isEmpty(), 
() -> new InvalidAlgorithmConfigurationException("Shadow algorithms", 
notExistedAlgorithms));
     }
 }
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandlerFactory.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandlerFactory.java
index 5025c13a24d..9fb9b22f42f 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandlerFactory.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandlerFactory.java
@@ -26,8 +26,6 @@ import 
org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 
-import java.util.Properties;
-
 /**
  * RQL backend handler factory.
  */
@@ -50,7 +48,7 @@ public final class RQLBackendHandlerFactory {
     }
     
     private static ProxyBackendHandler newInstanceByDistSQLResultSet(final 
RQLStatement sqlStatement, final ConnectionSession connectionSession) {
-        DistSQLResultSet resultSet = 
TypedSPIRegistry.getService(DistSQLResultSet.class, 
sqlStatement.getClass().getCanonicalName(), new Properties());
+        DistSQLResultSet resultSet = 
TypedSPIRegistry.getService(DistSQLResultSet.class, 
sqlStatement.getClass().getCanonicalName());
         return new RQLResultSetBackendHandler(sqlStatement, connectionSession, 
(DatabaseDistSQLResultSet) resultSet);
     }
 }
diff --git 
a/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/version/ShardingSphereProxyVersion.java
 
b/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/version/ShardingSphereProxyVersion.java
index 427f1374200..76a414751c4 100644
--- 
a/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/version/ShardingSphereProxyVersion.java
+++ 
b/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/version/ShardingSphereProxyVersion.java
@@ -34,7 +34,6 @@ import 
org.apache.shardingsphere.proxy.frontend.spi.DatabaseProtocolFrontendEngi
 import javax.sql.DataSource;
 import java.util.Map.Entry;
 import java.util.Optional;
-import java.util.Properties;
 
 /**
  * ShardingSphere-Proxy version.
@@ -69,7 +68,7 @@ public final class ShardingSphereProxyVersion {
         }
         DatabaseServerInfo databaseServerInfo = new 
DatabaseServerInfo(dataSource.get());
         log.info("{}, database name is `{}`", databaseServerInfo, 
database.getName());
-        TypedSPIRegistry.getService(DatabaseProtocolFrontendEngine.class, 
DatabaseTypeEngine.getTrunkDatabaseType(databaseServerInfo.getDatabaseName()).getType(),
 new Properties())
+        TypedSPIRegistry.getService(DatabaseProtocolFrontendEngine.class, 
DatabaseTypeEngine.getTrunkDatabaseType(databaseServerInfo.getDatabaseName()).getType())
                 .setDatabaseVersion(database.getName(), 
databaseServerInfo.getDatabaseVersion());
     }
     
diff --git 
a/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
 
b/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
index 8f87b15dcec..3363f80d3a0 100644
--- 
a/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
+++ 
b/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/netty/ServerHandlerInitializer.java
@@ -27,8 +27,6 @@ import 
org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import 
org.apache.shardingsphere.proxy.frontend.spi.DatabaseProtocolFrontendEngine;
 
-import java.util.Properties;
-
 /**
  * Server handler initializer.
  */
@@ -39,7 +37,7 @@ public final class ServerHandlerInitializer extends 
ChannelInitializer<SocketCha
     
     @Override
     protected void initChannel(final SocketChannel socketChannel) {
-        DatabaseProtocolFrontendEngine databaseProtocolFrontendEngine = 
TypedSPIRegistry.getService(DatabaseProtocolFrontendEngine.class, 
databaseType.getType(), new Properties());
+        DatabaseProtocolFrontendEngine databaseProtocolFrontendEngine = 
TypedSPIRegistry.getService(DatabaseProtocolFrontendEngine.class, 
databaseType.getType());
         databaseProtocolFrontendEngine.initChannel(socketChannel);
         ChannelPipeline pipeline = socketChannel.pipeline();
         pipeline.addLast(new ChannelAttrInitializer());

Reply via email to