You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2020/06/13 07:30:48 UTC

[shardingsphere] branch master updated: Add shardingsphere-jdbc-spring-infra module (#6025)

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

panjuan 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 6d4e2ef  Add shardingsphere-jdbc-spring-infra module (#6025)
6d4e2ef is described below

commit 6d4e2ef742bd629162dd6466ad1fe1fbeb7f29d4
Author: Liang Zhang <te...@163.com>
AuthorDate: Sat Jun 13 15:30:35 2020 +0800

    Add shardingsphere-jdbc-spring-infra module (#6025)
    
    * refactor org.apache.shardingsphere.sharding.spring.namespace.parser structure
    
    * Add KeyGenerateStrategyBeanDefinitionTag
    
    * refactor ShardingRuleBeanDefinitionTag
    
    * refactor KeyGenerateStrategyBeanDefinitionTag
    
    * rename ShardingAlgorithmBeanDefinitionTag
    
    * Add shardingsphere-jdbc-spring-infra module
    
    * rename shardingsphere-jdbc-spring-boot-starter-infra module
---
 .../pom.xml                                        |  2 +-
 .../pom.xml                                        |  2 +-
 .../pom.xml                                        |  4 ++--
 .../pom.xml                                        |  2 +-
 .../handler/ShardingNamespaceHandler.java          | 25 +++++++++++----------
 .../KeyGenerateAlgorithmBeanDefinitionParser.java  |  4 ++--
 .../ShardingAlgorithmBeanDefinitionParser.java     |  8 +++----
 .../ShardingRuleBeanDefinitionParser.java          | 11 +++++----
 .../KeyGenerateStrategyBeanDefinitionParser.java   |  8 +++----
 .../ShardingStrategyBeanDefinition.java            |  4 ++--
 .../ShardingStrategyBeanDefinitionParser.java      |  2 +-
 .../KeyGenerateAlgorithmBeanDefinitionTag.java     | 12 ++--------
 .../ShardingAlgorithmBeanDefinitionTag.java}       | 10 ++++-----
 .../{ => rule}/ShardingRuleBeanDefinitionTag.java  |  4 +++-
 .../KeyGenerateStrategyBeanDefinitionTag.java}     | 12 +++++-----
 .../ShardingStrategyBeanDefinitionTag.java         |  2 +-
 .../shardingsphere-jdbc-spring/pom.xml             |  2 +-
 .../pom.xml                                        |  2 +-
 .../pom.xml                                        |  2 +-
 .../pom.xml                                        | 26 +++++++---------------
 .../pom.xml                                        |  4 ++--
 ...NoneShardingStrategyConfigurationConverter.java |  0
 .../boot/datasource/DataSourceMapSetter.java       |  1 +
 .../prop/DataSourcePropertiesSetter.java           |  0
 .../AbstractDbcp2DataSourcePropertiesSetter.java   |  0
 .../CommonDbcp2DataSourcePropertiesSetter.java     |  0
 .../impl/DataSourcePropertiesSetterHolder.java     |  0
 .../impl/HikariDataSourcePropertiesSetter.java     |  0
 .../TomcatDbcp2DataSourcePropertiesSetter.java     |  0
 .../spring/boot/util/DataSourceUtil.java           |  0
 .../spring/boot/util/PropertyUtil.java             |  0
 ...boot.datasource.prop.DataSourcePropertiesSetter |  0
 ...ShardingStrategyConfigurationConverterTest.java |  0
 .../boot/datasource/DataSourceMapSetterTest.java   |  0
 .../DataSourcePropertiesSetterHolderTest.java      |  0
 .../Dbcp2DataSourcePropertiesSetterTest.java       |  0
 .../HikariDataSourcePropertiesSetterTest.java      |  0
 .../spring/boot/util/DataSourceUtilTest.java       |  0
 38 files changed, 67 insertions(+), 82 deletions(-)

diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/pom.xml b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/pom.xml
index 13c0ec3..85d057f 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/pom.xml
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/pom.xml
@@ -41,7 +41,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-jdbc-spring-boot-util</artifactId>
+            <artifactId>shardingsphere-jdbc-spring-boot-starter-infra</artifactId>
             <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
diff --git a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/pom.xml b/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/pom.xml
index 306de39..fd2c57f 100644
--- a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/pom.xml
+++ b/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/pom.xml
@@ -41,7 +41,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-jdbc-spring-boot-util</artifactId>
+            <artifactId>shardingsphere-jdbc-spring-boot-starter-infra</artifactId>
             <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/pom.xml b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/pom.xml
index 7f2ab0b..aa5b00f 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/pom.xml
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/pom.xml
@@ -27,7 +27,7 @@
     </parent>
     <artifactId>shardingsphere-shadow-spring-boot-starter</artifactId>
     <name>${project.artifactId}</name>
-
+    
     <dependencies>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
@@ -41,7 +41,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-jdbc-spring-boot-util</artifactId>
+            <artifactId>shardingsphere-jdbc-spring-boot-starter-infra</artifactId>
             <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/pom.xml b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/pom.xml
index 035ff8c..84cfdd2 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/pom.xml
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/pom.xml
@@ -41,7 +41,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-jdbc-spring-boot-util</artifactId>
+            <artifactId>shardingsphere-jdbc-spring-boot-starter-infra</artifactId>
             <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/handler/ShardingNamespaceHandler.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/handler/ShardingNamespaceHandler.java
index 6a32125..af6cf6b 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/handler/ShardingNamespaceHandler.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/handler/ShardingNamespaceHandler.java
@@ -17,15 +17,16 @@
 
 package org.apache.shardingsphere.sharding.spring.namespace.handler;
 
-import org.apache.shardingsphere.sharding.spring.namespace.parser.KeyGenerateAlgorithmBeanDefinitionParser;
-import org.apache.shardingsphere.sharding.spring.namespace.parser.KeyGenerateStrategyBeanDefinitionParser;
-import org.apache.shardingsphere.sharding.spring.namespace.parser.ShardingAlgorithmBeanDefinitionParser;
-import org.apache.shardingsphere.sharding.spring.namespace.parser.ShardingRuleBeanDefinitionParser;
-import org.apache.shardingsphere.sharding.spring.namespace.parser.ShardingStrategyBeanDefinitionParser;
-import org.apache.shardingsphere.sharding.spring.namespace.tag.KeyGenerateAlgorithmBeanDefinitionTag;
-import org.apache.shardingsphere.sharding.spring.namespace.tag.SPIBeanDefinitionTag;
-import org.apache.shardingsphere.sharding.spring.namespace.tag.ShardingRuleBeanDefinitionTag;
-import org.apache.shardingsphere.sharding.spring.namespace.tag.ShardingStrategyBeanDefinitionTag;
+import org.apache.shardingsphere.sharding.spring.namespace.parser.algorithm.KeyGenerateAlgorithmBeanDefinitionParser;
+import org.apache.shardingsphere.sharding.spring.namespace.parser.algorithm.ShardingAlgorithmBeanDefinitionParser;
+import org.apache.shardingsphere.sharding.spring.namespace.parser.rule.ShardingRuleBeanDefinitionParser;
+import org.apache.shardingsphere.sharding.spring.namespace.parser.strategy.KeyGenerateStrategyBeanDefinitionParser;
+import org.apache.shardingsphere.sharding.spring.namespace.parser.strategy.ShardingStrategyBeanDefinitionParser;
+import org.apache.shardingsphere.sharding.spring.namespace.tag.algorithm.KeyGenerateAlgorithmBeanDefinitionTag;
+import org.apache.shardingsphere.sharding.spring.namespace.tag.algorithm.ShardingAlgorithmBeanDefinitionTag;
+import org.apache.shardingsphere.sharding.spring.namespace.tag.rule.ShardingRuleBeanDefinitionTag;
+import org.apache.shardingsphere.sharding.spring.namespace.tag.strategy.KeyGenerateStrategyBeanDefinitionTag;
+import org.apache.shardingsphere.sharding.spring.namespace.tag.strategy.ShardingStrategyBeanDefinitionTag;
 import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
 
 /**
@@ -40,8 +41,8 @@ public final class ShardingNamespaceHandler extends NamespaceHandlerSupport {
         registerBeanDefinitionParser(ShardingStrategyBeanDefinitionTag.COMPLEX_STRATEGY_ROOT_TAG, new ShardingStrategyBeanDefinitionParser());
         registerBeanDefinitionParser(ShardingStrategyBeanDefinitionTag.HINT_STRATEGY_ROOT_TAG, new ShardingStrategyBeanDefinitionParser());
         registerBeanDefinitionParser(ShardingStrategyBeanDefinitionTag.NONE_STRATEGY_ROOT_TAG, new ShardingStrategyBeanDefinitionParser());
-        registerBeanDefinitionParser(KeyGenerateAlgorithmBeanDefinitionTag.STRATEGY_TAG, new KeyGenerateStrategyBeanDefinitionParser());
-        registerBeanDefinitionParser(KeyGenerateAlgorithmBeanDefinitionTag.ALGORITHM_TAG, new KeyGenerateAlgorithmBeanDefinitionParser());
-        registerBeanDefinitionParser(SPIBeanDefinitionTag.SHARDING_ALGORITHM_TAG, new ShardingAlgorithmBeanDefinitionParser());
+        registerBeanDefinitionParser(ShardingAlgorithmBeanDefinitionTag.ROOT_TAG, new ShardingAlgorithmBeanDefinitionParser());
+        registerBeanDefinitionParser(KeyGenerateStrategyBeanDefinitionTag.ROOT_TAG, new KeyGenerateStrategyBeanDefinitionParser());
+        registerBeanDefinitionParser(KeyGenerateAlgorithmBeanDefinitionTag.ROOT_TAG, new KeyGenerateAlgorithmBeanDefinitionParser());
     }
 }
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/KeyGenerateAlgorithmBeanDefinitionParser.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/algorithm/KeyGenerateAlgorithmBeanDefinitionPa [...]
similarity index 94%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/KeyGenerateAlgorithmBeanDefinitionParser.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/algorithm/KeyGenerateAlgorithmBeanDefinitionParser.java
index 8d38f15..69369ea 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/KeyGenerateAlgorithmBeanDefinitionParser.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/algorithm/KeyGenerateAlgorithmBeanDefinitionParser.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.parser;
+package org.apache.shardingsphere.sharding.spring.namespace.parser.algorithm;
 
 import org.apache.shardingsphere.sharding.spring.namespace.factorybean.KeyGenerateAlgorithmFactoryBean;
-import org.apache.shardingsphere.sharding.spring.namespace.tag.KeyGenerateAlgorithmBeanDefinitionTag;
+import org.apache.shardingsphere.sharding.spring.namespace.tag.algorithm.KeyGenerateAlgorithmBeanDefinitionTag;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingAlgorithmBeanDefinitionParser.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/algorithm/ShardingAlgorithmBeanDefinitionParser.java
similarity index 88%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingAlgorithmBeanDefinitionParser.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/algorithm/ShardingAlgorithmBeanDefinitionParser.java
index 85b7a30..5c53220 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingAlgorithmBeanDefinitionParser.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/algorithm/ShardingAlgorithmBeanDefinitionParser.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.parser;
+package org.apache.shardingsphere.sharding.spring.namespace.parser.algorithm;
 
 import org.apache.shardingsphere.sharding.spring.namespace.factorybean.ShardingAlgorithmFactoryBean;
-import org.apache.shardingsphere.sharding.spring.namespace.tag.SPIBeanDefinitionTag;
+import org.apache.shardingsphere.sharding.spring.namespace.tag.algorithm.ShardingAlgorithmBeanDefinitionTag;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
@@ -36,13 +36,13 @@ public final class ShardingAlgorithmBeanDefinitionParser extends AbstractBeanDef
     @Override
     protected AbstractBeanDefinition parseInternal(final Element element, final ParserContext parserContext) {
         BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(ShardingAlgorithmFactoryBean.class);
-        factory.addConstructorArgValue(element.getAttribute(SPIBeanDefinitionTag.SHARDING_ALGORITHM_TYPE_ATTRIBUTE));
+        factory.addConstructorArgValue(element.getAttribute(ShardingAlgorithmBeanDefinitionTag.TYPE_ATTRIBUTE));
         factory.addConstructorArgValue(parseProperties(element, parserContext));
         return factory.getBeanDefinition();
     }
     
     private Properties parseProperties(final Element element, final ParserContext parserContext) {
-        Element propsElement = DomUtils.getChildElementByTagName(element, SPIBeanDefinitionTag.PROPS_TAG);
+        Element propsElement = DomUtils.getChildElementByTagName(element, ShardingAlgorithmBeanDefinitionTag.PROPS_TAG);
         return null == propsElement ? new Properties() : parserContext.getDelegate().parsePropsElement(propsElement);
     }
 }
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingRuleBeanDefinitionParser.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/rule/ShardingRuleBeanDefinitionParser.java
similarity index 95%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingRuleBeanDefinitionParser.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/rule/ShardingRuleBeanDefinitionParser.java
index 9c4c2f4..066975e 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingRuleBeanDefinitionParser.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/rule/ShardingRuleBeanDefinitionParser.java
@@ -15,14 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.parser;
+package org.apache.shardingsphere.sharding.spring.namespace.parser.rule;
 
 import com.google.common.base.Strings;
 import org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
 import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
 import org.apache.shardingsphere.sharding.spring.namespace.factorybean.KeyGenerateAlgorithmFactoryBean;
-import org.apache.shardingsphere.sharding.spring.namespace.tag.KeyGenerateAlgorithmBeanDefinitionTag;
-import org.apache.shardingsphere.sharding.spring.namespace.tag.ShardingRuleBeanDefinitionTag;
+import org.apache.shardingsphere.sharding.spring.namespace.tag.rule.ShardingRuleBeanDefinitionTag;
 import org.apache.shardingsphere.sharding.strategy.algorithm.keygen.config.AlgorithmProvidedShardingRuleConfiguration;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.config.RuntimeBeanReference;
@@ -163,7 +162,7 @@ public final class ShardingRuleBeanDefinitionParser extends AbstractBeanDefiniti
     }
     
     private void parseKeyGenerateStrategyConfiguration(final Element tableElement, final BeanDefinitionBuilder factory) {
-        String keyGenerator = tableElement.getAttribute(KeyGenerateAlgorithmBeanDefinitionTag.STRATEGY_REF_ATTRIBUTE);
+        String keyGenerator = tableElement.getAttribute(ShardingRuleBeanDefinitionTag.STRATEGY_REF_ATTRIBUTE);
         if (!Strings.isNullOrEmpty(keyGenerator)) {
             factory.addPropertyReference("keyGenerateStrategy", keyGenerator);
         }
@@ -220,7 +219,7 @@ public final class ShardingRuleBeanDefinitionParser extends AbstractBeanDefiniti
     }
     
     private Collection<String> findKeyGenerateStrategyRefsFromTable(final List<Element> shardingTableElements) {
-        return shardingTableElements.stream().filter(each -> !Strings.isNullOrEmpty(each.getAttribute(KeyGenerateAlgorithmBeanDefinitionTag.STRATEGY_REF_ATTRIBUTE)))
-                .map(each -> each.getAttribute(KeyGenerateAlgorithmBeanDefinitionTag.STRATEGY_REF_ATTRIBUTE)).collect(Collectors.toSet());
+        return shardingTableElements.stream().filter(each -> !Strings.isNullOrEmpty(each.getAttribute(ShardingRuleBeanDefinitionTag.STRATEGY_REF_ATTRIBUTE)))
+                .map(each -> each.getAttribute(ShardingRuleBeanDefinitionTag.STRATEGY_REF_ATTRIBUTE)).collect(Collectors.toSet());
     }
 }
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/KeyGenerateStrategyBeanDefinitionParser.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/strategy/KeyGenerateStrategyBeanDefinitionParser.java
similarity index 88%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/KeyGenerateStrategyBeanDefinitionParser.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/strategy/KeyGenerateStrategyBeanDefinitionParser.java
index 853eae4..983b331 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/KeyGenerateStrategyBeanDefinitionParser.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/strategy/KeyGenerateStrategyBeanDefinitionParser.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.parser;
+package org.apache.shardingsphere.sharding.spring.namespace.parser.strategy;
 
 import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
-import org.apache.shardingsphere.sharding.spring.namespace.tag.KeyGenerateAlgorithmBeanDefinitionTag;
+import org.apache.shardingsphere.sharding.spring.namespace.tag.strategy.KeyGenerateStrategyBeanDefinitionTag;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
@@ -33,8 +33,8 @@ public final class KeyGenerateStrategyBeanDefinitionParser extends AbstractBeanD
     @Override
     protected AbstractBeanDefinition parseInternal(final Element element, final ParserContext parserContext) {
         BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(KeyGenerateStrategyConfiguration.class);
-        factory.addConstructorArgValue(element.getAttribute(KeyGenerateAlgorithmBeanDefinitionTag.COLUMN_ATTRIBUTE));
-        factory.addConstructorArgValue(element.getAttribute(KeyGenerateAlgorithmBeanDefinitionTag.ALGORITHM_REF_TAG));
+        factory.addConstructorArgValue(element.getAttribute(KeyGenerateStrategyBeanDefinitionTag.COLUMN_ATTRIBUTE));
+        factory.addConstructorArgValue(element.getAttribute(KeyGenerateStrategyBeanDefinitionTag.ALGORITHM_REF_ATTRIBUTE));
         return factory.getBeanDefinition();
     }
 }
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingStrategyBeanDefinition.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/strategy/ShardingStrategyBeanDefinition.java
similarity index 97%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingStrategyBeanDefinition.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/strategy/ShardingStrategyBeanDefinition.java
index 6f9c3c6..799bc47 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingStrategyBeanDefinition.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/strategy/ShardingStrategyBeanDefinition.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.parser;
+package org.apache.shardingsphere.sharding.spring.namespace.parser.strategy;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
@@ -23,7 +23,7 @@ import org.apache.shardingsphere.sharding.api.config.strategy.sharding.ComplexSh
 import org.apache.shardingsphere.sharding.api.config.strategy.sharding.HintShardingStrategyConfiguration;
 import org.apache.shardingsphere.sharding.api.config.strategy.sharding.NoneShardingStrategyConfiguration;
 import org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
-import org.apache.shardingsphere.sharding.spring.namespace.tag.ShardingStrategyBeanDefinitionTag;
+import org.apache.shardingsphere.sharding.spring.namespace.tag.strategy.ShardingStrategyBeanDefinitionTag;
 import org.apache.shardingsphere.infra.exception.ShardingSphereException;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingStrategyBeanDefinitionParser.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/strategy/ShardingStrategyBeanDefinitionParser.java
similarity index 99%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingStrategyBeanDefinitionParser.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/strategy/ShardingStrategyBeanDefinitionParser.java
index 34a8e1e..796248f 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/ShardingStrategyBeanDefinitionParser.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/parser/strategy/ShardingStrategyBeanDefinitionParser.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.parser;
+package org.apache.shardingsphere.sharding.spring.namespace.parser.strategy;
 
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/KeyGenerateAlgorithmBeanDefinitionTag.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/algorithm/KeyGenerateAlgorithmBeanDefinitionTag.java
similarity index 72%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/KeyGenerateAlgorithmBeanDefinitionTag.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/algorithm/KeyGenerateAlgorithmBeanDefinitionTag.java
index eeb4c0b..3a42935 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/KeyGenerateAlgorithmBeanDefinitionTag.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/algorithm/KeyGenerateAlgorithmBeanDefinitionTag.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.tag;
+package org.apache.shardingsphere.sharding.spring.namespace.tag.algorithm;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
@@ -26,17 +26,9 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class KeyGenerateAlgorithmBeanDefinitionTag {
     
-    public static final String ALGORITHM_TAG = "key-generate-algorithm";
+    public static final String ROOT_TAG = "key-generate-algorithm";
     
     public static final String TYPE_ATTRIBUTE = "type";
     
     public static final String PROPS_TAG = "props";
-    
-    public static final String STRATEGY_REF_ATTRIBUTE = "key-generate-strategy-ref";
-    
-    public static final String STRATEGY_TAG = "key-generate-strategy";
-    
-    public static final String COLUMN_ATTRIBUTE = "column";
-    
-    public static final String ALGORITHM_REF_TAG = "algorithm-ref";
 }
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/SPIBeanDefinitionTag.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/algorithm/ShardingAlgorithmBeanDefinitionTag.java
similarity index 77%
copy from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/SPIBeanDefinitionTag.java
copy to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/algorithm/ShardingAlgorithmBeanDefinitionTag.java
index 8e25832..1a4321d 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/SPIBeanDefinitionTag.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/algorithm/ShardingAlgorithmBeanDefinitionTag.java
@@ -15,20 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.tag;
+package org.apache.shardingsphere.sharding.spring.namespace.tag.algorithm;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 
 /**
- * SPI bean definition tag.
+ * Sharding algorithm bean definition tag.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class SPIBeanDefinitionTag {
+public final class ShardingAlgorithmBeanDefinitionTag {
     
-    public static final String SHARDING_ALGORITHM_TAG = "sharding-algorithm";
+    public static final String ROOT_TAG = "sharding-algorithm";
     
-    public static final String SHARDING_ALGORITHM_TYPE_ATTRIBUTE = "type";
+    public static final String TYPE_ATTRIBUTE = "type";
     
     public static final String PROPS_TAG = "props";
 }
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/ShardingRuleBeanDefinitionTag.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/rule/ShardingRuleBeanDefinitionTag.java
similarity index 94%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/ShardingRuleBeanDefinitionTag.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/rule/ShardingRuleBeanDefinitionTag.java
index ea78ddf..ce5b558 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/ShardingRuleBeanDefinitionTag.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/rule/ShardingRuleBeanDefinitionTag.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.tag;
+package org.apache.shardingsphere.sharding.spring.namespace.tag.rule;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
@@ -64,5 +64,7 @@ public final class ShardingRuleBeanDefinitionTag {
     
     public static final String DEFAULT_TABLE_STRATEGY_REF_ATTRIBUTE = "default-table-strategy-ref";
     
+    public static final String STRATEGY_REF_ATTRIBUTE = "key-generate-strategy-ref";
+    
     public static final String DEFAULT_KEY_GENERATE_STRATEGY_REF_ATTRIBUTE = "default-key-generate-strategy-ref";
 }
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/SPIBeanDefinitionTag.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/strategy/KeyGenerateStrategyBeanDefinitionTag.java
similarity index 71%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/SPIBeanDefinitionTag.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/strategy/KeyGenerateStrategyBeanDefinitionTag.java
index 8e25832..f6d8ab3 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/SPIBeanDefinitionTag.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/strategy/KeyGenerateStrategyBeanDefinitionTag.java
@@ -15,20 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.tag;
+package org.apache.shardingsphere.sharding.spring.namespace.tag.strategy;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 
 /**
- * SPI bean definition tag.
+ * Key generate strategy bean definition tag.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class SPIBeanDefinitionTag {
+public final class KeyGenerateStrategyBeanDefinitionTag {
     
-    public static final String SHARDING_ALGORITHM_TAG = "sharding-algorithm";
+    public static final String ROOT_TAG = "key-generate-strategy";
     
-    public static final String SHARDING_ALGORITHM_TYPE_ATTRIBUTE = "type";
+    public static final String COLUMN_ATTRIBUTE = "column";
     
-    public static final String PROPS_TAG = "props";
+    public static final String ALGORITHM_REF_ATTRIBUTE = "algorithm-ref";
 }
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/ShardingStrategyBeanDefinitionTag.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/strategy/ShardingStrategyBeanDefinitionTag.java
similarity index 95%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/ShardingStrategyBeanDefinitionTag.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/strategy/ShardingStrategyBeanDefinitionTag.java
index acf487c..d277881 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/ShardingStrategyBeanDefinitionTag.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-namespace/src/main/java/org/apache/shardingsphere/sharding/spring/namespace/tag/strategy/ShardingStrategyBeanDefinitionTag.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sharding.spring.namespace.tag;
+package org.apache.shardingsphere.sharding.spring.namespace.tag.strategy;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/pom.xml b/shardingsphere-jdbc/shardingsphere-jdbc-spring/pom.xml
index 5300fc1..f0acf58 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/pom.xml
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/pom.xml
@@ -28,10 +28,10 @@
     <packaging>pom</packaging>
     
     <modules>
+        <module>shardingsphere-jdbc-spring-infra</module>
         <module>shardingsphere-jdbc-core-spring</module>
         <module>shardingsphere-jdbc-orchestration-spring</module>
         <module>shardingsphere-jdbc-transaction-spring</module>
-        <module>shardingsphere-jdbc-spring-boot-util</module>
     </modules>
     
     <dependencies>
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/pom.xml b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/pom.xml
index 3346f7e..dab72bf 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/pom.xml
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/pom.xml
@@ -49,7 +49,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-jdbc-spring-boot-util</artifactId>
+            <artifactId>shardingsphere-jdbc-spring-boot-starter-infra</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-orchestration-spring/shardingsphere-jdbc-orchestration-spring-boot-starter/pom.xml b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-orchestration-spring/shardingsphere-jdbc-orchestration-spring-boot-starter/pom.xml
index 3677fef..91bc027 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-orchestration-spring/shardingsphere-jdbc-orchestration-spring-boot-starter/pom.xml
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-orchestration-spring/shardingsphere-jdbc-orchestration-spring-boot-starter/pom.xml
@@ -49,7 +49,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-jdbc-spring-boot-util</artifactId>
+            <artifactId>shardingsphere-jdbc-spring-boot-starter-infra</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/pom.xml b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/pom.xml
similarity index 57%
copy from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/pom.xml
copy to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/pom.xml
index 7322642..cff1302 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/pom.xml
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/pom.xml
@@ -16,30 +16,20 @@
   ~ limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
         <artifactId>shardingsphere-jdbc-spring</artifactId>
         <version>5.0.0-RC1-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-jdbc-spring-boot-util</artifactId>
+    <artifactId>shardingsphere-jdbc-spring-infra</artifactId>
     <name>${project.artifactId}</name>
+    <packaging>pom</packaging>
     
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.shardingsphere</groupId>
-            <artifactId>shardingsphere-jdbc-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-        </dependency>
-    </dependencies>
+    <modules>
+        <module>shardingsphere-jdbc-spring-boot-starter-infra</module>
+    </modules>
 </project>
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/pom.xml b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/pom.xml
similarity index 93%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/pom.xml
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/pom.xml
index 7322642..cf29517 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/pom.xml
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/pom.xml
@@ -20,10 +20,10 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-jdbc-spring</artifactId>
+        <artifactId>shardingsphere-jdbc-spring-infra</artifactId>
         <version>5.0.0-RC1-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-jdbc-spring-boot-util</artifactId>
+    <artifactId>shardingsphere-jdbc-spring-boot-starter-infra</artifactId>
     <name>${project.artifactId}</name>
     
     <dependencies>
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/converter/StringToNoneShardingStrategyConfigurationConverter.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/converter/StringToNoneShardingStrategyConfigurationConverter.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/converter/StringToNoneShardingStrategyConfigurationConverter.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/converter/StringToNoneShardingStrategyConfigurationConverter.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/DataSourceMapSetter.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/DataSourceMapSetter.java
similarity index 99%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/DataSourceMapSetter.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/DataSourceMapSetter.java
index 0259025..63dfafa 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/DataSourceMapSetter.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/DataSourceMapSetter.java
@@ -60,6 +60,7 @@ public final class DataSourceMapSetter {
      * @param environment spring boot environment
      * @return data source map
      */
+    @SuppressWarnings("unchecked")
     public static Map<String, DataSource> getDataSourceMap(final Environment environment) {
         Map<String, DataSource> result = new LinkedHashMap<>();
         Map<String, Object> dataSourceCommonProps = PropertyUtil.handle(environment, COMMON_PREFIX, Map.class);
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/DataSourcePropertiesSetter.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/DataSourcePropertiesSetter.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/DataSourcePropertiesSetter.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/DataSourcePropertiesSetter.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/AbstractDbcp2DataSourcePropertiesSetter.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/AbstractDbcp2DataSourcePropertiesSetter.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/AbstractDbcp2DataSourcePropertiesSetter.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/AbstractDbcp2DataSourcePropertiesSetter.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/CommonDbcp2DataSourcePropertiesSetter.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/CommonDbcp2DataSourcePropertiesSetter.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/CommonDbcp2DataSourcePropertiesSetter.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/CommonDbcp2DataSourcePropertiesSetter.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/DataSourcePropertiesSetterHolder.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/DataSourcePropertiesSetterHolder.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/DataSourcePropertiesSetterHolder.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/DataSourcePropertiesSetterHolder.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/HikariDataSourcePropertiesSetter.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/HikariDataSourcePropertiesSetter.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/HikariDataSourcePropertiesSetter.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/HikariDataSourcePropertiesSetter.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/TomcatDbcp2DataSourcePropertiesSetter.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/TomcatDbcp2DataSourcePropertiesSetter.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/TomcatDbcp2DataSourcePropertiesSetter.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/datasource/prop/impl/TomcatDbcp2DataSourcePropertiesSetter.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/util/DataSourceUtil.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/util/DataSourceUtil.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/util/DataSourceUtil.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/util/DataSourceUtil.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/util/PropertyUtil.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/util/PropertyUtil.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/java/org/apache/shardingsphere/spring/boot/util/PropertyUtil.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/java/org/apache/shardingsphere/spring/boot/util/PropertyUtil.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/resources/META-INF/services/org.apache.shardingsphere.spring.boot.datasource.prop.DataSourcePropertiesSetter b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/resources/META-INF/services/org.apache.shardingsphere.spring.boot.datasource.prop.DataSourcePropertiesSetter
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/main/resources/META-INF/services/org.apache.shardingsphere.spring.boot.datasource.prop.DataSourcePropertiesSetter
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/main/resources/META-INF/services/org.apache.shardingsphere.spring.boot.datasource.prop.DataSourcePropertiesSetter
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/converter/StringToNoneShardingStrategyConfigurationConverterTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/converter/StringToNoneShardingStrategyConfigurationConverterTest.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/converter/StringToNoneShardingStrategyConfigurationConverterTest.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/converter/StringToNoneShardingStrategyConfigurationConverterTest.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/datasource/DataSourceMapSetterTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/datasource/DataSourceMapSetterTest.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/datasource/DataSourceMapSetterTest.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/datasource/DataSourceMapSetterTest.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/datasource/DataSourcePropertiesSetterHolderTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/datasource/DataSourcePropertiesSetterHolderTest.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/datasource/DataSourcePropertiesSetterHolderTest.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/datasource/DataSourcePropertiesSetterHolderTest.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/datasource/Dbcp2DataSourcePropertiesSetterTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/datasource/Dbcp2DataSourcePropertiesSetterTest.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/datasource/Dbcp2DataSourcePropertiesSetterTest.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/datasource/Dbcp2DataSourcePropertiesSetterTest.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/datasource/HikariDataSourcePropertiesSetterTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/datasource/HikariDataSourcePropertiesSetterTest.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/datasource/HikariDataSourcePropertiesSetterTest.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/datasource/HikariDataSourcePropertiesSetterTest.java
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/util/DataSourceUtilTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/util/DataSourceUtilTest.java
similarity index 100%
rename from shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-boot-util/src/test/java/org/apache/shardingsphere/spring/boot/util/DataSourceUtilTest.java
rename to shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-spring-infra/shardingsphere-jdbc-spring-boot-starter-infra/src/test/java/org/apache/shardingsphere/spring/boot/util/DataSourceUtilTest.java