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 f7021ec45d2 Remove useless invoke for RequiredSPIRegistry (#23713)
f7021ec45d2 is described below

commit f7021ec45d20251cdd398883fec47de64dff239c
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Jan 24 18:35:04 2023 +0800

    Remove useless invoke for RequiredSPIRegistry (#23713)
    
    * Refactor ReadwriteSplittingRuleStatementChecker
    
    * Add default type logic in TypedSPIRegistry
    
    * Add default type logic in TypedSPIRegistry
    
    * Remove useless invoke for RequiredSPIRegistry
---
 .../infra/datasource/pool/destroyer/DataSourcePoolDestroyer.java | 4 +---
 .../impl/driver/jdbc/type/memory/JDBCMemoryQueryResult.java      | 5 ++---
 .../driver/jdbc/core/datasource/ShardingSphereDataSource.java    | 6 +-----
 .../algorithm/CRC32MatchDataConsistencyCalculateAlgorithm.java   | 4 +---
 .../algorithm/DataMatchDataConsistencyCalculateAlgorithm.java    | 7 ++-----
 .../core/check/datasource/AbstractDataSourceChecker.java         | 4 +---
 .../data/pipeline/core/importer/DataSourceImporter.java          | 4 +---
 .../data/pipeline/core/ingest/dumper/InventoryDumper.java        | 7 ++-----
 .../yaml/YamlJobItemIncrementalTasksProgressSwapper.java         | 4 +---
 .../data/pipeline/core/prepare/InventoryTaskSplitter.java        | 7 ++-----
 .../data/pipeline/core/prepare/PipelineJobPreparerUtils.java     | 7 ++-----
 .../core/prepare/datasource/AbstractDataSourcePreparer.java      | 4 +---
 .../pipeline/scenario/migration/api/impl/MigrationJobAPI.java    | 3 +--
 .../shardingsphere/sqlfederation/rule/SQLFederationRule.java     | 7 ++-----
 .../optimizer/context/parser/OptimizerParserContextFactory.java  | 5 +----
 .../shardingsphere/sqltranslator/rule/SQLTranslatorRule.java     | 3 +--
 .../transaction/xa/XAShardingSphereTransactionManager.java       | 5 +----
 .../transaction/xa/jta/datasource/swapper/DataSourceSwapper.java | 4 +---
 .../mode/manager/standalone/StandaloneContextManagerBuilder.java | 7 +++----
 .../mode/repository/standalone/jdbc/JDBCRepository.java          | 4 +---
 .../backend/response/header/query/QueryHeaderBuilderEngine.java  | 9 ++-------
 .../communication/jdbc/DatabaseCommunicationEngineTest.java      | 6 ++++--
 .../shardingsphere/proxy/initializer/BootstrapInitializer.java   | 6 +-----
 .../test/it/optimize/SQLNodeConverterEngineIT.java               | 5 +----
 24 files changed, 36 insertions(+), 91 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/pool/destroyer/DataSourcePoolDestroyer.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/pool/destroyer/DataSourcePoolDestroyer.java
index 217e2b8a24e..660224893ae 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/pool/destroyer/DataSourcePoolDestroyer.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/datasource/pool/destroyer/DataSourcePoolDestroyer.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.infra.datasource.pool.destroyer;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import 
org.apache.shardingsphere.infra.datasource.pool.destroyer.detector.DataSourcePoolActiveDetector;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 import javax.sql.DataSource;
@@ -54,8 +53,7 @@ public final class DataSourcePoolDestroyer {
     }
     
     private void waitUntilActiveConnectionComplete() {
-        DataSourcePoolActiveDetector dataSourcePoolActiveDetector = 
TypedSPIRegistry.findService(DataSourcePoolActiveDetector.class, 
dataSource.getClass().getName())
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(DataSourcePoolActiveDetector.class));
+        DataSourcePoolActiveDetector dataSourcePoolActiveDetector = 
TypedSPIRegistry.getService(DataSourcePoolActiveDetector.class, 
dataSource.getClass().getName());
         while 
(dataSourcePoolActiveDetector.containsActiveConnection(dataSource)) {
             try {
                 Thread.sleep(10L);
diff --git 
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCMemoryQueryResult.java
 
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCMemoryQueryResult.java
index a7b4e4fa2cf..fc048147adf 100644
--- 
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCMemoryQueryResult.java
+++ 
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/result/query/impl/driver/jdbc/type/memory/JDBCMemoryQueryResult.java
@@ -21,7 +21,6 @@ import 
org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.metadata.JDBCQueryResultMetaData;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.memory.loader.DialectQueryResultDataRowLoader;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.AbstractMemoryQueryResult;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 import java.sql.ResultSet;
@@ -33,7 +32,7 @@ import java.sql.SQLException;
 public final class JDBCMemoryQueryResult extends AbstractMemoryQueryResult {
     
     public JDBCMemoryQueryResult(final ResultSet resultSet, final DatabaseType 
databaseType) throws SQLException {
-        super(new JDBCQueryResultMetaData(resultSet.getMetaData()), 
TypedSPIRegistry.findService(DialectQueryResultDataRowLoader.class, 
databaseType.getType())
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(DialectQueryResultDataRowLoader.class)).load(resultSet.getMetaData().getColumnCount(),
 resultSet));
+        super(new JDBCQueryResultMetaData(resultSet.getMetaData()),
+                
TypedSPIRegistry.getService(DialectQueryResultDataRowLoader.class, 
databaseType.getType()).load(resultSet.getMetaData().getColumnCount(), 
resultSet));
     }
 }
diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
index 5855697b17a..d1e0b78073f 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.rule.scope.GlobalRuleConfiguration;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
 import 
org.apache.shardingsphere.infra.instance.metadata.InstanceMetaDataBuilder;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilder;
@@ -75,10 +74,7 @@ public final class ShardingSphereDataSource extends 
AbstractDataSourceAdapter im
         databaseRuleConfigs.removeAll(globalRuleConfigs);
         ContextManagerBuilderParameter param = new 
ContextManagerBuilderParameter(modeConfig, 
Collections.singletonMap(databaseName,
                 new DataSourceProvidedDatabaseConfiguration(dataSourceMap, 
databaseRuleConfigs)), globalRuleConfigs, props, Collections.emptyList(), 
instanceMetaData, false);
-        ContextManagerBuilder contextManagerBuilder = null == modeConfig
-                ? RequiredSPIRegistry.getService(ContextManagerBuilder.class)
-                : TypedSPIRegistry.getService(ContextManagerBuilder.class, 
modeConfig.getType());
-        return contextManagerBuilder.build(param);
+        return TypedSPIRegistry.getService(ContextManagerBuilder.class, null 
== modeConfig ? null : modeConfig.getType()).build(param);
     }
     
     @Override
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 91f94c3b18a..36860e88bfe 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
@@ -28,7 +28,6 @@ import 
org.apache.shardingsphere.data.pipeline.spi.sqlbuilder.PipelineSQLBuilder
 import org.apache.shardingsphere.infra.algorithm.AlgorithmDescription;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 import java.sql.Connection;
@@ -61,8 +60,7 @@ public final class 
CRC32MatchDataConsistencyCalculateAlgorithm extends AbstractD
     
     @Override
     public Iterable<DataConsistencyCalculatedResult> calculate(final 
DataConsistencyCalculateParameter param) {
-        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.findService(PipelineSQLBuilder.class, param.getDatabaseType(), 
null)
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PipelineSQLBuilder.class));
+        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, param.getDatabaseType(), 
null);
         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 cbfa995cbeb..8949ddc70ac 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
@@ -33,7 +33,6 @@ import 
org.apache.shardingsphere.data.pipeline.spi.sqlbuilder.PipelineSQLBuilder
 import org.apache.shardingsphere.infra.algorithm.AlgorithmDescription;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.util.spi.ShardingSphereServiceLoader;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 import java.math.BigDecimal;
@@ -114,8 +113,7 @@ public final class 
DataMatchDataConsistencyCalculateAlgorithm extends AbstractSt
             Collection<Collection<Object>> records = new LinkedList<>();
             Object maxUniqueKeyValue = null;
             try (ResultSet resultSet = preparedStatement.executeQuery()) {
-                ColumnValueReader columnValueReader = 
TypedSPIRegistry.findService(ColumnValueReader.class, param.getDatabaseType())
-                        .orElseGet(() -> 
RequiredSPIRegistry.getService(ColumnValueReader.class));
+                ColumnValueReader columnValueReader = 
TypedSPIRegistry.getService(ColumnValueReader.class, param.getDatabaseType());
                 while (resultSet.next()) {
                     if (isCanceling()) {
                         throw new 
PipelineTableDataConsistencyCheckLoadingFailedException(param.getSchemaName(), 
param.getLogicTableName());
@@ -137,8 +135,7 @@ public final class 
DataMatchDataConsistencyCalculateAlgorithm extends AbstractSt
     }
     
     private String getQuerySQL(final DataConsistencyCalculateParameter param) {
-        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.findService(PipelineSQLBuilder.class, param.getDatabaseType(), 
null)
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PipelineSQLBuilder.class));
+        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, param.getDatabaseType(), 
null);
         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 18592d0f6e3..d8ddadae9dd 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
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWith
 import 
org.apache.shardingsphere.data.pipeline.core.exception.job.PrepareJobWithTargetTableNotEmptyException;
 import 
org.apache.shardingsphere.data.pipeline.spi.check.datasource.DataSourceChecker;
 import 
org.apache.shardingsphere.data.pipeline.spi.sqlbuilder.PipelineSQLBuilder;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 import javax.sql.DataSource;
@@ -66,8 +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.findService(PipelineSQLBuilder.class, 
getDatabaseType(), null)
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PipelineSQLBuilder.class)).buildCheckEmptySQL(schemaName,
 tableName);
+        String sql = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
getDatabaseType(), null).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 50af7aa0d78..234981f576a 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
@@ -42,7 +42,6 @@ import 
org.apache.shardingsphere.data.pipeline.spi.importer.connector.ImporterCo
 import 
org.apache.shardingsphere.data.pipeline.spi.ratelimit.JobRateLimitAlgorithm;
 import 
org.apache.shardingsphere.data.pipeline.spi.sqlbuilder.PipelineSQLBuilder;
 import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 import javax.sql.DataSource;
@@ -87,8 +86,7 @@ public final class DataSourceImporter extends 
AbstractLifecycleExecutor implemen
         rateLimitAlgorithm = importerConfig.getRateLimitAlgorithm();
         this.dataSourceManager = (PipelineDataSourceManager) 
importerConnector.getConnector();
         this.channel = channel;
-        pipelineSqlBuilder = 
TypedSPIRegistry.findService(PipelineSQLBuilder.class, 
importerConfig.getDataSourceConfig().getDatabaseType().getType(), null)
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PipelineSQLBuilder.class));
+        pipelineSqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
importerConfig.getDataSourceConfig().getDatabaseType().getType(), null);
         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 16ea76833c3..8f9bcab169b 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
@@ -45,7 +45,6 @@ import 
org.apache.shardingsphere.data.pipeline.spi.ingest.dumper.ColumnValueRead
 import 
org.apache.shardingsphere.data.pipeline.spi.sqlbuilder.PipelineSQLBuilder;
 import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.UnsupportedSQLOperationException;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 import javax.sql.DataSource;
@@ -84,10 +83,8 @@ public final class InventoryDumper extends 
AbstractLifecycleExecutor implements
         this.dumperConfig = dumperConfig;
         this.channel = channel;
         this.dataSource = dataSource;
-        sqlBuilder = TypedSPIRegistry.findService(PipelineSQLBuilder.class, 
dumperConfig.getDataSourceConfig().getDatabaseType().getType(), null)
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PipelineSQLBuilder.class));
-        columnValueReader = 
TypedSPIRegistry.findService(ColumnValueReader.class, 
dumperConfig.getDataSourceConfig().getDatabaseType().getType())
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(ColumnValueReader.class));
+        sqlBuilder = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
dumperConfig.getDataSourceConfig().getDatabaseType().getType(), null);
+        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/job/progress/yaml/YamlJobItemIncrementalTasksProgressSwapper.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/job/progress/yaml/YamlJobItemIncrementalTasksProgressSwapper.java
index 21440aec293..05aa801f996 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/job/progress/yaml/YamlJobItemIncrementalTasksProgressSwapper.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/job/progress/yaml/YamlJobItemIncrementalTasksProgressSwapper.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.data.pipeline.core.job.progress.yaml;
 import 
org.apache.shardingsphere.data.pipeline.api.job.progress.JobItemIncrementalTasksProgress;
 import 
org.apache.shardingsphere.data.pipeline.api.task.progress.IncrementalTaskProgress;
 import 
org.apache.shardingsphere.data.pipeline.spi.ingest.position.PositionInitializer;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 /**
@@ -61,8 +60,7 @@ public final class YamlJobItemIncrementalTasksProgressSwapper 
{
         }
         IncrementalTaskProgress taskProgress = new IncrementalTaskProgress();
         // TODO databaseType
-        PositionInitializer positionInitializer = TypedSPIRegistry.findService(
-                PositionInitializer.class, databaseType).orElseGet(() -> 
RequiredSPIRegistry.getService(PositionInitializer.class));
+        PositionInitializer positionInitializer = 
TypedSPIRegistry.getService(PositionInitializer.class, databaseType);
         
taskProgress.setPosition(positionInitializer.init(yamlProgress.getPosition()));
         taskProgress.setIncrementalTaskDelay(yamlProgress.getDelay());
         return new JobItemIncrementalTasksProgress(taskProgress);
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 660020cd6c6..aa2c502722f 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
@@ -42,7 +42,6 @@ import 
org.apache.shardingsphere.data.pipeline.core.util.PipelineJdbcUtils;
 import 
org.apache.shardingsphere.data.pipeline.spi.ingest.channel.PipelineChannelCreator;
 import 
org.apache.shardingsphere.data.pipeline.spi.ratelimit.JobRateLimitAlgorithm;
 import 
org.apache.shardingsphere.data.pipeline.spi.sqlbuilder.PipelineSQLBuilder;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 import javax.sql.DataSource;
@@ -160,8 +159,7 @@ public final class InventoryTaskSplitter {
                                                                               
final InventoryDumperConfiguration dumperConfig) {
         Collection<IngestPosition<?>> result = new LinkedList<>();
         PipelineJobConfiguration jobConfig = jobItemContext.getJobConfig();
-        String sql = TypedSPIRegistry.findService(PipelineSQLBuilder.class, 
jobConfig.getSourceDatabaseType(), null)
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PipelineSQLBuilder.class))
+        String sql = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
jobConfig.getSourceDatabaseType(), null)
                 .buildSplitByPrimaryKeyRangeSQL(dumperConfig.getSchemaName(new 
LogicTableName(dumperConfig.getLogicTableName())), 
dumperConfig.getActualTableName(), dumperConfig.getUniqueKey());
         int shardingSize = 
jobItemContext.getJobProcessContext().getPipelineProcessConfig().getRead().getShardingSize();
         try (
@@ -202,8 +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.findService(PipelineSQLBuilder.class, 
jobConfig.getSourceDatabaseType(), null)
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PipelineSQLBuilder.class)).buildCountSQL(schemaName,
 actualTableName);
+        String sql = TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
jobConfig.getSourceDatabaseType(), null).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 528cc28451c..669c31659ef 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
@@ -41,7 +41,6 @@ import 
org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.resource.YamlDataSourceConfigurationSwapper;
 import org.apache.shardingsphere.parser.rule.SQLParserRule;
@@ -132,8 +131,7 @@ public final class PipelineJobPreparerUtils {
         }
         String databaseType = 
dumperConfig.getDataSourceConfig().getDatabaseType().getType();
         DataSource dataSource = 
dataSourceManager.getDataSource(dumperConfig.getDataSourceConfig());
-        return TypedSPIRegistry.findService(PositionInitializer.class, 
databaseType)
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PositionInitializer.class)).init(dataSource, 
dumperConfig.getJobId());
+        return TypedSPIRegistry.getService(PositionInitializer.class, 
databaseType).init(dataSource, dumperConfig.getJobId());
     }
     
     /**
@@ -178,8 +176,7 @@ public final class PipelineJobPreparerUtils {
      */
     public static void destroyPosition(final String jobId, final 
PipelineDataSourceConfiguration pipelineDataSourceConfig) throws SQLException {
         DatabaseType databaseType = pipelineDataSourceConfig.getDatabaseType();
-        PositionInitializer positionInitializer = 
TypedSPIRegistry.findService(PositionInitializer.class, databaseType.getType())
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PositionInitializer.class));
+        PositionInitializer positionInitializer = 
TypedSPIRegistry.getService(PositionInitializer.class, databaseType.getType());
         final long startTimeMillis = System.currentTimeMillis();
         log.info("Cleanup database type:{}, data source type:{}", 
databaseType.getType(), pipelineDataSourceConfig.getType());
         if (pipelineDataSourceConfig instanceof 
ShardingSpherePipelineDataSourceConfiguration) {
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 29a6076a267..5cd0044e2cc 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
@@ -28,7 +28,6 @@ import 
org.apache.shardingsphere.data.pipeline.spi.sqlbuilder.PipelineSQLBuilder
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeEngine;
 import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 import javax.sql.DataSource;
@@ -61,8 +60,7 @@ public abstract class AbstractDataSourcePreparer implements 
DataSourcePreparer {
         }
         CreateTableConfiguration createTableConfig = 
param.getCreateTableConfig();
         String defaultSchema = 
DatabaseTypeEngine.getDefaultSchemaName(targetDatabaseType).orElse(null);
-        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.findService(PipelineSQLBuilder.class, 
targetDatabaseType.getType(), null)
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PipelineSQLBuilder.class));
+        PipelineSQLBuilder sqlBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
targetDatabaseType.getType(), null);
         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 a442048e666..3a49262abba 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
@@ -312,8 +312,7 @@ public final class MigrationJobAPI extends 
AbstractInventoryIncrementalJobAPIImp
         String targetTableName = jobConfig.getTargetTableName();
         // TODO use jobConfig.targetSchemaName
         String targetSchemaName = jobConfig.getSourceSchemaName();
-        PipelineSQLBuilder pipelineSQLBuilder = 
TypedSPIRegistry.findService(PipelineSQLBuilder.class, 
jobConfig.getTargetDatabaseType(), null)
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(PipelineSQLBuilder.class));
+        PipelineSQLBuilder pipelineSQLBuilder = 
TypedSPIRegistry.getService(PipelineSQLBuilder.class, 
jobConfig.getTargetDatabaseType(), null);
         try (
                 PipelineDataSourceWrapper dataSource = 
PipelineDataSourceFactory.newInstance(jobConfig.getTarget());
                 Connection connection = dataSource.getConnection()) {
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/rule/SQLFederationRule.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/rule/SQLFederationRule.java
index 3cfcce8eeb1..f1552bda757 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/rule/SQLFederationRule.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/rule/SQLFederationRule.java
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import org.apache.shardingsphere.infra.rule.identifier.scope.GlobalRule;
 import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import 
org.apache.shardingsphere.sqlfederation.api.config.SQLFederationRuleConfiguration;
 import org.apache.shardingsphere.sqlfederation.enums.SQLFederationTypeEnum;
@@ -43,8 +42,7 @@ public final class SQLFederationRule implements GlobalRule {
     
     public SQLFederationRule(final SQLFederationRuleConfiguration ruleConfig) {
         configuration = ruleConfig;
-        sqlFederationExecutor = 
TypedSPIRegistry.findService(SQLFederationExecutor.class, 
configuration.getSqlFederationType())
-                
.orElse(RequiredSPIRegistry.getService(SQLFederationExecutor.class));
+        sqlFederationExecutor = 
TypedSPIRegistry.getService(SQLFederationExecutor.class, 
configuration.getSqlFederationType());
     }
     
     /**
@@ -64,8 +62,7 @@ public final class SQLFederationRule implements GlobalRule {
         
Preconditions.checkArgument(SQLFederationTypeEnum.isValidSQLFederationType(sqlFederationType),
 "%s is not a valid sqlFederationType.", sqlFederationType);
         if (!configuration.getSqlFederationType().equals(sqlFederationType)) {
             configuration.setSqlFederationType(sqlFederationType);
-            sqlFederationExecutor = 
TypedSPIRegistry.findService(SQLFederationExecutor.class, 
configuration.getSqlFederationType())
-                    
.orElse(RequiredSPIRegistry.getService(SQLFederationExecutor.class));
+            sqlFederationExecutor = 
TypedSPIRegistry.getService(SQLFederationExecutor.class, 
configuration.getSqlFederationType());
         }
         sqlFederationExecutor.init(databaseName, schemaName, metaData, 
shardingSphereData, jdbcExecutor, eventBusContext);
         return sqlFederationExecutor;
diff --git 
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/parser/OptimizerParserContextFactory.java
 
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/parser/OptimizerParserContextFactory.java
index 94ddc5dde8b..03744d9b7ca 100644
--- 
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/parser/OptimizerParserContextFactory.java
+++ 
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/parser/OptimizerParserContextFactory.java
@@ -23,7 +23,6 @@ import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeEngine;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.context.parser.dialect.OptimizerSQLDialectBuilder;
 
@@ -67,9 +66,7 @@ public final class OptimizerParserContextFactory {
     private static Properties createSQLDialectProperties(final DatabaseType 
databaseType) {
         Properties result = new Properties();
         result.setProperty(CalciteConnectionProperty.TIME_ZONE.camelName(), 
"UTC");
-        result.putAll((null == databaseType
-                ? 
RequiredSPIRegistry.getService(OptimizerSQLDialectBuilder.class)
-                : 
TypedSPIRegistry.getService(OptimizerSQLDialectBuilder.class, 
databaseType.getType())).build());
+        
result.putAll(TypedSPIRegistry.getService(OptimizerSQLDialectBuilder.class, 
null == databaseType ? null : databaseType.getType()).build());
         return result;
     }
 }
diff --git 
a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRule.java
 
b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRule.java
index 7f315dc5c77..6fa77b35194 100644
--- 
a/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRule.java
+++ 
b/kernel/sql-translator/core/src/main/java/org/apache/shardingsphere/sqltranslator/rule/SQLTranslatorRule.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sqltranslator.rule;
 import lombok.Getter;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.rule.identifier.scope.GlobalRule;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import 
org.apache.shardingsphere.sqltranslator.api.config.SQLTranslatorRuleConfiguration;
@@ -41,7 +40,7 @@ public final class SQLTranslatorRule implements GlobalRule {
     
     public SQLTranslatorRule(final SQLTranslatorRuleConfiguration ruleConfig) {
         configuration = ruleConfig;
-        translator = TypedSPIRegistry.findService(SQLTranslator.class, 
ruleConfig.getType()).orElse(RequiredSPIRegistry.getService(SQLTranslator.class));
+        translator = TypedSPIRegistry.getService(SQLTranslator.class, 
ruleConfig.getType());
         useOriginalSQLWhenTranslatingFailed = 
ruleConfig.isUseOriginalSQLWhenTranslatingFailed();
     }
     
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 1939a931f4d..1562fd2ed58 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
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.transaction.xa;
 import lombok.SneakyThrows;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import org.apache.shardingsphere.transaction.api.TransactionType;
 import org.apache.shardingsphere.transaction.core.ResourceDataSource;
@@ -56,9 +55,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 = null == providerType
-                ? 
RequiredSPIRegistry.getService(XATransactionManagerProvider.class)
-                : 
TypedSPIRegistry.getService(XATransactionManagerProvider.class, providerType, 
new Properties());
+        xaTransactionManagerProvider = 
TypedSPIRegistry.getService(XATransactionManagerProvider.class, providerType, 
new Properties());
         xaTransactionManagerProvider.init();
         Map<String, ResourceDataSource> resourceDataSources = 
getResourceDataSources(dataSources);
         resourceDataSources.forEach((key, value) -> 
cachedDataSources.put(value.getOriginalName(), 
newXATransactionDataSource(databaseTypes.get(key), value)));
diff --git 
a/kernel/transaction/type/xa/core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/DataSourceSwapper.java
 
b/kernel/transaction/type/xa/core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/DataSourceSwapper.java
index 224421e03e7..8174e84a5cf 100644
--- 
a/kernel/transaction/type/xa/core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/DataSourceSwapper.java
+++ 
b/kernel/transaction/type/xa/core/src/main/java/org/apache/shardingsphere/transaction/xa/jta/datasource/swapper/DataSourceSwapper.java
@@ -21,7 +21,6 @@ import com.google.common.base.CaseFormat;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import 
org.apache.shardingsphere.transaction.xa.jta.datasource.properties.XADataSourceDefinition;
 import 
org.apache.shardingsphere.transaction.xa.jta.exception.XADataSourceInitializeException;
@@ -87,8 +86,7 @@ public final class DataSourceSwapper {
     
     private Map<String, Object> getDatabaseAccessConfiguration(final 
DataSource dataSource) {
         Map<String, Object> result = new HashMap<>(3, 1);
-        DataSourcePropertyProvider provider = 
TypedSPIRegistry.findService(DataSourcePropertyProvider.class, 
dataSource.getClass().getName())
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(DataSourcePropertyProvider.class));
+        DataSourcePropertyProvider provider = 
TypedSPIRegistry.getService(DataSourcePropertyProvider.class, 
dataSource.getClass().getName());
         try {
             result.put("url", findGetterMethod(dataSource, 
provider.getURLPropertyName()).invoke(dataSource));
             result.put("user", findGetterMethod(dataSource, 
provider.getUsernamePropertyName()).invoke(dataSource));
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
index 1b0b5ca4fd1..5bc6e2ac4c7 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
@@ -21,7 +21,6 @@ import 
org.apache.shardingsphere.infra.config.mode.PersistRepositoryConfiguratio
 import org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import org.apache.shardingsphere.mode.lock.GlobalLockContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -35,6 +34,7 @@ import 
org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 import 
org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepository;
 
 import java.sql.SQLException;
+import java.util.Properties;
 
 /**
  * Standalone context manager builder.
@@ -44,9 +44,8 @@ public final class StandaloneContextManagerBuilder implements 
ContextManagerBuil
     @Override
     public ContextManager build(final ContextManagerBuilderParameter param) 
throws SQLException {
         PersistRepositoryConfiguration repositoryConfig = 
param.getModeConfiguration().getRepository();
-        StandalonePersistRepository repository = null == repositoryConfig
-                ? 
RequiredSPIRegistry.getService(StandalonePersistRepository.class)
-                : 
TypedSPIRegistry.getService(StandalonePersistRepository.class, 
repositoryConfig.getType(), repositoryConfig.getProps());
+        StandalonePersistRepository repository = TypedSPIRegistry.getService(
+                StandalonePersistRepository.class, null == repositoryConfig ? 
null : repositoryConfig.getType(), null == repositoryConfig ? new Properties() 
: repositoryConfig.getProps());
         MetaDataPersistService persistService = new 
MetaDataPersistService(repository);
         persistConfigurations(persistService, param);
         InstanceContext instanceContext = buildInstanceContext(param);
diff --git 
a/mode/type/standalone/repository/provider/jdbc/core/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/JDBCRepository.java
 
b/mode/type/standalone/repository/provider/jdbc/core/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/JDBCRepository.java
index d20818d7531..835b010de8f 100644
--- 
a/mode/type/standalone/repository/provider/jdbc/core/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/JDBCRepository.java
+++ 
b/mode/type/standalone/repository/provider/jdbc/core/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/JDBCRepository.java
@@ -21,7 +21,6 @@ import com.google.common.base.Strings;
 import com.zaxxer.hikari.HikariDataSource;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import 
org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepository;
 import 
org.apache.shardingsphere.mode.repository.standalone.jdbc.props.JDBCRepositoryProperties;
@@ -67,8 +66,7 @@ public final class JDBCRepository implements 
StandalonePersistRepository {
         try (
                 Connection connection = hikariDataSource.getConnection();
                 Statement statement = connection.createStatement()) {
-            String type = 
jdbcRepositoryProps.getValue(JDBCRepositoryPropertyKey.PROVIDER);
-            provider = null == type ? 
RequiredSPIRegistry.getService(JDBCRepositoryProvider.class) : 
TypedSPIRegistry.getService(JDBCRepositoryProvider.class, type);
+            provider = 
TypedSPIRegistry.getService(JDBCRepositoryProvider.class, 
jdbcRepositoryProps.getValue(JDBCRepositoryPropertyKey.PROVIDER));
             if (!jdbcUrl.contains(H2_FILE_MODE_KEY)) {
                 statement.execute(provider.dropTableSQL());
             }
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilderEngine.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilderEngine.java
index 2eb1505ca17..20c33a7d58d 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilderEngine.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/response/header/query/QueryHeaderBuilderEngine.java
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.infra.binder.segment.select.projection.impl.Col
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 
 import java.sql.SQLException;
@@ -50,9 +49,7 @@ public final class QueryHeaderBuilderEngine {
     public QueryHeader build(final QueryResultMetaData queryResultMetaData, 
final ShardingSphereDatabase database, final int columnIndex) throws 
SQLException {
         String columnName = queryResultMetaData.getColumnName(columnIndex);
         String columnLabel = queryResultMetaData.getColumnLabel(columnIndex);
-        QueryHeaderBuilder queryHeaderBuilder = 
TypedSPIRegistry.findService(QueryHeaderBuilder.class, databaseType.getType())
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(QueryHeaderBuilder.class));
-        return queryHeaderBuilder.build(queryResultMetaData, database, 
columnName, columnLabel, columnIndex);
+        return TypedSPIRegistry.getService(QueryHeaderBuilder.class, 
databaseType.getType()).build(queryResultMetaData, database, columnName, 
columnLabel, columnIndex);
     }
     
     /**
@@ -69,9 +66,7 @@ public final class QueryHeaderBuilderEngine {
                              final QueryResultMetaData queryResultMetaData, 
final ShardingSphereDatabase database, final int columnIndex) throws 
SQLException {
         String columnName = getColumnName(projectionsContext, 
queryResultMetaData, columnIndex);
         String columnLabel = getColumnLabel(projectionsContext, 
queryResultMetaData, columnIndex);
-        QueryHeaderBuilder queryHeaderBuilder = 
TypedSPIRegistry.findService(QueryHeaderBuilder.class, databaseType.getType())
-                .orElseGet(() -> 
RequiredSPIRegistry.getService(QueryHeaderBuilder.class));
-        return queryHeaderBuilder.build(queryResultMetaData, database, 
columnName, columnLabel, columnIndex);
+        return TypedSPIRegistry.getService(QueryHeaderBuilder.class, 
databaseType.getType()).build(queryResultMetaData, database, columnName, 
columnLabel, columnIndex);
     }
     
     private String getColumnLabel(final ProjectionsContext projectionsContext, 
final QueryResultMetaData queryResultMetaData, final int columnIndex) throws 
SQLException {
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java
index 500532469bc..1b429bbb4bd 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java
@@ -51,7 +51,9 @@ import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.executor.callb
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.statement.JDBCBackendStatement;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
+import 
org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilder;
 import 
org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeaderBuilderEngine;
+import 
org.apache.shardingsphere.proxy.backend.response.header.query.impl.MySQLQueryHeaderBuilder;
 import org.apache.shardingsphere.proxy.backend.util.ProxyContextRestorer;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import 
org.apache.shardingsphere.sqlfederation.api.config.SQLFederationRuleConfiguration;
@@ -78,7 +80,6 @@ import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
@@ -148,7 +149,8 @@ public final class DatabaseCommunicationEngineTest extends 
ProxyContextRestorer
             
when(resultSet.getMetaData().getColumnType(1)).thenReturn(Types.INTEGER);
             when(resultSet.next()).thenReturn(true, false);
             when(resultSet.getObject(1)).thenReturn(Integer.MAX_VALUE);
-            typedSPIRegistry.when(() -> 
TypedSPIRegistry.findService(SQLFederationExecutor.class, 
"NONE")).thenReturn(Optional.of(federationExecutor));
+            typedSPIRegistry.when(() -> 
TypedSPIRegistry.getService(SQLFederationExecutor.class, 
"NONE")).thenReturn(federationExecutor);
+            typedSPIRegistry.when(() -> 
TypedSPIRegistry.getService(QueryHeaderBuilder.class, "H2")).thenReturn(new 
MySQLQueryHeaderBuilder());
             systemSchemaUtil.when(() -> 
SystemSchemaUtil.containsSystemSchema(any(DatabaseType.class), any(), 
any(ShardingSphereDatabase.class))).thenReturn(true);
             SQLFederationRule sqlFederationRule = new SQLFederationRule(new 
SQLFederationRuleConfiguration("ORIGINAL"));
             
when(globalRuleMetaData.getSingleRule(SQLFederationRule.class)).thenReturn(sqlFederationRule);
diff --git 
a/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializer.java
 
b/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializer.java
index 41e946f8364..e013cda51b8 100644
--- 
a/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializer.java
+++ 
b/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializer.java
@@ -24,7 +24,6 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
 import 
org.apache.shardingsphere.infra.instance.metadata.InstanceMetaDataBuilder;
 import org.apache.shardingsphere.infra.util.spi.ShardingSphereServiceLoader;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.mode.YamlModeConfigurationSwapper;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -67,10 +66,7 @@ public final class BootstrapInitializer {
         ContextManagerBuilderParameter param = new 
ContextManagerBuilderParameter(modeConfig, 
proxyConfig.getDatabaseConfigurations(),
                 proxyConfig.getGlobalConfiguration().getRules(), 
proxyConfig.getGlobalConfiguration().getProperties(), 
proxyConfig.getGlobalConfiguration().getLabels(),
                 createInstanceMetaData(proxyConfig, port), force);
-        ContextManagerBuilder contextManagerBuilder = null == modeConfig
-                ? RequiredSPIRegistry.getService(ContextManagerBuilder.class)
-                : TypedSPIRegistry.getService(ContextManagerBuilder.class, 
modeConfig.getType());
-        return contextManagerBuilder.build(param);
+        return TypedSPIRegistry.getService(ContextManagerBuilder.class, null 
== modeConfig ? null : modeConfig.getType()).build(param);
     }
     
     private InstanceMetaData createInstanceMetaData(final ProxyConfiguration 
proxyConfig, final int port) {
diff --git 
a/test/it/optimizer/src/test/java/org/apache/shardingsphere/test/it/optimize/SQLNodeConverterEngineIT.java
 
b/test/it/optimizer/src/test/java/org/apache/shardingsphere/test/it/optimize/SQLNodeConverterEngineIT.java
index aaeedeb7ba1..1936411afe7 100644
--- 
a/test/it/optimizer/src/test/java/org/apache/shardingsphere/test/it/optimize/SQLNodeConverterEngineIT.java
+++ 
b/test/it/optimizer/src/test/java/org/apache/shardingsphere/test/it/optimize/SQLNodeConverterEngineIT.java
@@ -28,7 +28,6 @@ import org.apache.calcite.sql.parser.SqlParser;
 import org.apache.calcite.sql.parser.SqlParser.Config;
 import org.apache.calcite.sql.parser.impl.SqlParserImpl;
 import org.apache.calcite.util.Litmus;
-import 
org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPIRegistry;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPIRegistry;
 import org.apache.shardingsphere.sql.parser.api.CacheOption;
 import org.apache.shardingsphere.sql.parser.api.SQLParserEngine;
@@ -222,9 +221,7 @@ public final class SQLNodeConverterEngineIT {
     private Properties createSQLDialectProperties(final String databaseType) {
         Properties result = new Properties();
         result.setProperty(CalciteConnectionProperty.TIME_ZONE.camelName(), 
"UTC");
-        result.putAll((null == databaseType
-                ? 
RequiredSPIRegistry.getService(OptimizerSQLDialectBuilder.class)
-                : 
TypedSPIRegistry.getService(OptimizerSQLDialectBuilder.class, 
databaseType)).build());
+        
result.putAll(TypedSPIRegistry.getService(OptimizerSQLDialectBuilder.class, 
databaseType).build());
         return result;
     }
 }

Reply via email to