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

menghaoran 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 bcf8fd1  Add mode config for spring namespace 2eca161 (#11932)
bcf8fd1 is described below

commit bcf8fd1741e6332a13ac3a4c2a24c27407b374c5
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Aug 21 15:21:49 2021 +0800

    Add mode config for spring namespace 2eca161 (#11932)
    
    * Add todo
    
    * Add mode config for spring namespace
    
    * Add mode test cases
    
    * Add mode repository
---
 .../StandalonePersistRepositoryConfiguration.java  |  2 +-
 .../shardingsphere-jdbc-core/pom.xml               |  5 +++
 .../api/yaml/AbstractYamlDataSourceTest.java       |  1 +
 .../handler/DataSourceNamespaceHandler.java        |  7 +++-
 .../parser/DataSourceBeanDefinitionParser.java     | 32 ++++++++++++---
 ...positoryConfigurationBeanDefinitionParser.java} | 18 ++++----
 .../namespace/tag/DataSourceBeanDefinitionTag.java |  8 ++--
 ...finitionTag.java => ModeBeanDefinitionTag.java} | 14 +++----
 ...g.java => ModeRepositoryBeanDefinitionTag.java} | 12 ++----
 .../resources/META-INF/namespace/datasource.xsd    | 19 +++++++++
 ...eTest.java => AbstractSpringNamespaceTest.java} |  4 +-
 .../spring/SpringNamespaceForMemoryModeTest.java   | 19 ++-------
 .../SpringNamespaceForStandaloneModeTest.java      | 19 ++-------
 .../spring/included/data-sources-context.xml       | 31 ++++++++++++++
 .../rules-context.xml}                             | 24 -----------
 .../META-INF/spring/memory-application-context.xml | 43 +++++++++++++++++++
 .../spring/standalone-application-context.xml      | 48 ++++++++++++++++++++++
 ...gistryCenterConfigurationBeanDefinitionTag.java |  2 +-
 ...tryCenterConfigurationBeanDefinitionParser.java |  2 +-
 19 files changed, 212 insertions(+), 98 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/mode/config/StandalonePersistRepositoryConfiguration.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/mode/config/StandalonePersistRepositoryConfiguration.java
index d6bdfec..1b18d13 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/mode/config/StandalonePersistRepositoryConfiguration.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/mode/config/StandalonePersistRepositoryConfiguration.java
@@ -27,7 +27,7 @@ import java.util.Properties;
  */
 @RequiredArgsConstructor
 @Getter
-public class StandalonePersistRepositoryConfiguration implements 
PersistRepositoryConfiguration {
+public final class StandalonePersistRepositoryConfiguration implements 
PersistRepositoryConfiguration {
     
     private final String type;
     
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/pom.xml 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/pom.xml
index f598afc..0c9d547 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/pom.xml
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/pom.xml
@@ -59,6 +59,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-infra-authority-common</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-infra-context</artifactId>
             <version>${project.version}</version>
         </dependency>
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/api/yaml/AbstractYamlDataSourceTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/api/yaml/AbstractYamlDataSourceTest.java
index 4f2af1c..f6dfad9 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/api/yaml/AbstractYamlDataSourceTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/test/java/org/apache/shardingsphere/driver/governance/api/yaml/AbstractYamlDataSourceTest.java
@@ -32,6 +32,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 
+// TODO move to new acceptance test module with mode
 public abstract class AbstractYamlDataSourceTest {
     
     @BeforeClass
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/handler/DataSourceNamespaceHandler.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/handler/DataSourceNamespaceHandler.java
index be984d0..acb6c30 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/handler/DataSourceNamespaceHandler.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/handler/DataSourceNamespaceHandler.java
@@ -17,10 +17,12 @@
 
 package org.apache.shardingsphere.spring.namespace.handler;
 
-import 
org.apache.shardingsphere.spring.namespace.tag.DataSourceBeanDefinitionTag;
-import 
org.apache.shardingsphere.spring.namespace.tag.TransactionTypeScannerBeanDefinitionTag;
 import 
org.apache.shardingsphere.spring.namespace.parser.DataSourceBeanDefinitionParser;
+import 
org.apache.shardingsphere.spring.namespace.parser.ModeRepositoryConfigurationBeanDefinitionParser;
 import 
org.apache.shardingsphere.spring.namespace.parser.TransactionTypeScannerBeanDefinitionParser;
+import 
org.apache.shardingsphere.spring.namespace.tag.DataSourceBeanDefinitionTag;
+import 
org.apache.shardingsphere.spring.namespace.tag.ModeRepositoryBeanDefinitionTag;
+import 
org.apache.shardingsphere.spring.namespace.tag.TransactionTypeScannerBeanDefinitionTag;
 import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
 
 /**
@@ -31,6 +33,7 @@ public final class DataSourceNamespaceHandler extends 
NamespaceHandlerSupport {
     @Override
     public void init() {
         registerBeanDefinitionParser(DataSourceBeanDefinitionTag.ROOT_TAG, new 
DataSourceBeanDefinitionParser());
+        registerBeanDefinitionParser(ModeRepositoryBeanDefinitionTag.ROOT_TAG, 
new ModeRepositoryConfigurationBeanDefinitionParser());
         
registerBeanDefinitionParser(TransactionTypeScannerBeanDefinitionTag.ROOT_TAG, 
new TransactionTypeScannerBeanDefinitionParser());
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
index 69290d9..92ebe25 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/DataSourceBeanDefinitionParser.java
@@ -21,6 +21,7 @@ import com.google.common.base.Splitter;
 import 
org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
 import org.apache.shardingsphere.infra.mode.config.ModeConfiguration;
 import 
org.apache.shardingsphere.spring.namespace.tag.DataSourceBeanDefinitionTag;
+import org.apache.shardingsphere.spring.namespace.tag.ModeBeanDefinitionTag;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.config.RuntimeBeanReference;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
@@ -46,7 +47,7 @@ public final class DataSourceBeanDefinitionParser extends 
AbstractBeanDefinition
     protected AbstractBeanDefinition parseInternal(final Element element, 
final ParserContext parserContext) {
         BeanDefinitionBuilder factory = 
BeanDefinitionBuilder.rootBeanDefinition(ShardingSphereDataSource.class);
         factory.addConstructorArgValue(parseSchemaName(element));
-        factory.addConstructorArgValue(parseModeConfiguration());
+        factory.addConstructorArgValue(parseModeConfiguration(element));
         factory.addConstructorArgValue(parseDataSources(element));
         factory.addConstructorArgValue(parseRuleConfigurations(element));
         factory.addConstructorArgValue(parseProperties(element, 
parserContext));
@@ -55,20 +56,39 @@ public final class DataSourceBeanDefinitionParser extends 
AbstractBeanDefinition
     }
     
     private String parseSchemaName(final Element element) {
-        return 
element.getAttribute(DataSourceBeanDefinitionTag.SCHEMA_NAME_TAG);
+        return 
element.getAttribute(DataSourceBeanDefinitionTag.SCHEMA_NAME_ATTRIBUTE);
     }
     
     // TODO parse mode
-    private BeanDefinition parseModeConfiguration() {
+    private BeanDefinition parseModeConfiguration(final Element element) {
         BeanDefinitionBuilder factory = 
BeanDefinitionBuilder.rootBeanDefinition(ModeConfiguration.class);
+        Element modeElement = DomUtils.getChildElementByTagName(element, 
ModeBeanDefinitionTag.ROOT_TAG);
+        if (null == modeElement) {
+            addDefaultModeConfiguration(factory);
+        } else {
+            addConfiguredModeConfiguration(factory, modeElement);
+        }
+        return factory.getBeanDefinition();
+    }
+    
+    private void addDefaultModeConfiguration(final BeanDefinitionBuilder 
factory) {
         factory.addConstructorArgValue("Memory");
         factory.addConstructorArgValue(null);
         factory.addConstructorArgValue(true);
-        return factory.getBeanDefinition();
+    }
+    
+    private void addConfiguredModeConfiguration(final BeanDefinitionBuilder 
factory, final Element modeElement) {
+        
factory.addConstructorArgValue(modeElement.getAttribute(ModeBeanDefinitionTag.TYPE_ATTRIBUTE));
+        if (null == 
modeElement.getAttribute(ModeBeanDefinitionTag.REPOSITORY_REF_ATTRIBUTE)) {
+            factory.addConstructorArgValue(null);
+        } else {
+            
factory.addConstructorArgReference(modeElement.getAttribute(ModeBeanDefinitionTag.REPOSITORY_REF_ATTRIBUTE));
+        }
+        
factory.addConstructorArgValue(modeElement.getAttribute(ModeBeanDefinitionTag.OVERWRITE_ATTRIBUTE));
     }
     
     private Map<String, RuntimeBeanReference> parseDataSources(final Element 
element) {
-        List<String> dataSources = 
Splitter.on(",").trimResults().splitToList(element.getAttribute(DataSourceBeanDefinitionTag.DATA_SOURCE_NAMES_TAG));
+        List<String> dataSources = 
Splitter.on(",").trimResults().splitToList(element.getAttribute(DataSourceBeanDefinitionTag.DATA_SOURCE_NAMES_ATTRIBUTE));
         Map<String, RuntimeBeanReference> result = new 
ManagedMap<>(dataSources.size());
         for (String each : dataSources) {
             result.put(each, new RuntimeBeanReference(each));
@@ -77,7 +97,7 @@ public final class DataSourceBeanDefinitionParser extends 
AbstractBeanDefinition
     }
     
     private Collection<RuntimeBeanReference> parseRuleConfigurations(final 
Element element) {
-        List<String> ruleIdList = 
Splitter.on(",").trimResults().splitToList(element.getAttribute(DataSourceBeanDefinitionTag.RULE_REFS_TAG));
+        List<String> ruleIdList = 
Splitter.on(",").trimResults().splitToList(element.getAttribute(DataSourceBeanDefinitionTag.RULE_REFS_ATTRIBUTE));
         Collection<RuntimeBeanReference> result = new 
ManagedList<>(ruleIdList.size());
         for (String each : ruleIdList) {
             result.add(new RuntimeBeanReference(each));
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/parser/RegistryCenterConfigurationBeanDefinitionParser.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/ModeRepositoryConfigurationBeanD
 [...]
similarity index 67%
copy from 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/parser/RegistryCenterConfigurationBeanDefinitionParser.java
copy to 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/ModeRepositoryConfigurationBeanDefinitionParser.java
index 23e6995..2bc754c 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/parser/RegistryCenterConfigurationBeanDefinitionParser.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/parser/ModeRepositoryConfigurationBeanDefinitionParser.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.spring.namespace.governance.parser;
+package org.apache.shardingsphere.spring.namespace.parser;
 
-import 
org.apache.shardingsphere.governance.repository.api.config.RegistryCenterConfiguration;
-import 
org.apache.shardingsphere.spring.namespace.governance.constants.RegistryCenterConfigurationBeanDefinitionTag;
+import 
org.apache.shardingsphere.infra.mode.config.StandalonePersistRepositoryConfiguration;
+import 
org.apache.shardingsphere.spring.namespace.tag.ModeRepositoryBeanDefinitionTag;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
@@ -29,22 +29,20 @@ import org.w3c.dom.Element;
 import java.util.Properties;
 
 /**
- * Registry center configuration parser for spring namespace.
+ * Mode repository configuration parser for spring namespace.
  */
-public final class RegistryCenterConfigurationBeanDefinitionParser extends 
AbstractBeanDefinitionParser {
+public final class ModeRepositoryConfigurationBeanDefinitionParser extends 
AbstractBeanDefinitionParser {
     
     @Override
     protected AbstractBeanDefinition parseInternal(final Element element, 
final ParserContext parserContext) {
-        BeanDefinitionBuilder factory = 
BeanDefinitionBuilder.rootBeanDefinition(RegistryCenterConfiguration.class);
-        
factory.addConstructorArgValue(element.getAttribute(RegistryCenterConfigurationBeanDefinitionTag.TYPE_ATTRIBUTE));
-        
factory.addConstructorArgValue(element.getAttribute(RegistryCenterConfigurationBeanDefinitionTag.NAMESPACE_ATTRIBUTE));
-        
factory.addConstructorArgValue(element.getAttribute(RegistryCenterConfigurationBeanDefinitionTag.SERVER_LISTS_ATTRIBUTE));
+        BeanDefinitionBuilder factory = 
BeanDefinitionBuilder.rootBeanDefinition(StandalonePersistRepositoryConfiguration.class);
+        
factory.addConstructorArgValue(element.getAttribute(ModeRepositoryBeanDefinitionTag.TYPE_ATTRIBUTE));
         factory.addConstructorArgValue(parseProperties(element, 
parserContext));
         return factory.getBeanDefinition();
     }
     
     private Properties parseProperties(final Element element, final 
ParserContext parserContext) {
-        Element propsElement = DomUtils.getChildElementByTagName(element, 
RegistryCenterConfigurationBeanDefinitionTag.PROP_TAG);
+        Element propsElement = DomUtils.getChildElementByTagName(element, 
ModeRepositoryBeanDefinitionTag.PROPS_TAG);
         return null == propsElement ? new Properties() : 
parserContext.getDelegate().parsePropsElement(propsElement);
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
index 5eba3a9..1aab531 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
@@ -28,11 +28,11 @@ public final class DataSourceBeanDefinitionTag {
     
     public static final String ROOT_TAG = "data-source";
     
-    public static final String DATA_SOURCE_NAMES_TAG = "data-source-names";
+    public static final String SCHEMA_NAME_ATTRIBUTE = "schema-name";
     
-    public static final String RULE_REFS_TAG = "rule-refs";
+    public static final String DATA_SOURCE_NAMES_ATTRIBUTE = 
"data-source-names";
     
-    public static final String PROPS_TAG = "props";
+    public static final String RULE_REFS_ATTRIBUTE = "rule-refs";
     
-    public static final String SCHEMA_NAME_TAG = "schema-name";
+    public static final String PROPS_TAG = "props";
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/ModeBeanDefinitionTag.java
similarity index 71%
copy from 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
copy to 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/ModeBeanDefinitionTag.java
index 5eba3a9..561e5f8 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/ModeBeanDefinitionTag.java
@@ -21,18 +21,16 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 
 /**
- * Data source bean definition tag.
+ * Mode bean definition tag.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DataSourceBeanDefinitionTag {
+public final class ModeBeanDefinitionTag {
     
-    public static final String ROOT_TAG = "data-source";
+    public static final String ROOT_TAG = "mode";
     
-    public static final String DATA_SOURCE_NAMES_TAG = "data-source-names";
+    public static final String TYPE_ATTRIBUTE = "type";
     
-    public static final String RULE_REFS_TAG = "rule-refs";
+    public static final String REPOSITORY_REF_ATTRIBUTE = "repository-ref";
     
-    public static final String PROPS_TAG = "props";
-    
-    public static final String SCHEMA_NAME_TAG = "schema-name";
+    public static final String OVERWRITE_ATTRIBUTE = "overwrite";
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/ModeRepositoryBeanDefinitionTag.java
similarity index 74%
copy from 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
copy to 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/ModeRepositoryBeanDefinitionTag.java
index 5eba3a9..2bd5095 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/DataSourceBeanDefinitionTag.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/tag/ModeRepositoryBeanDefinitionTag.java
@@ -21,18 +21,14 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 
 /**
- * Data source bean definition tag.
+ * Mode repository bean definition tag.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DataSourceBeanDefinitionTag {
+public final class ModeRepositoryBeanDefinitionTag {
     
-    public static final String ROOT_TAG = "data-source";
+    public static final String ROOT_TAG = "mode-repository";
     
-    public static final String DATA_SOURCE_NAMES_TAG = "data-source-names";
-    
-    public static final String RULE_REFS_TAG = "rule-refs";
+    public static final String TYPE_ATTRIBUTE = "type";
     
     public static final String PROPS_TAG = "props";
-    
-    public static final String SCHEMA_NAME_TAG = "schema-name";
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
index 946237c..7e55b72 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/main/resources/META-INF/namespace/datasource.xsd
@@ -27,6 +27,7 @@
         <xsd:complexType>
             <xsd:all>
                 <xsd:element ref="beans:props" minOccurs="0" />
+                <xsd:element ref="mode" minOccurs="0" />
             </xsd:all>
             <xsd:attribute name="id" type="xsd:string" use="required" />
             <xsd:attribute name="schema-name" type="xsd:string" 
default="logic_db" />
@@ -35,5 +36,23 @@
         </xsd:complexType>
     </xsd:element>
     
+    <xsd:element name="mode">
+        <xsd:complexType>
+            <xsd:attribute name="type" type="xsd:string" use="required" />
+            <xsd:attribute name="repository-ref" type="xsd:string" />
+            <xsd:attribute name="overwrite" type="xsd:string" default="false" 
/>
+        </xsd:complexType>
+    </xsd:element>
+    
+    <xsd:element name="mode-repository">
+        <xsd:complexType>
+            <xsd:all>
+                <xsd:element ref="beans:props" minOccurs="0" />
+            </xsd:all>
+            <xsd:attribute name="id" type="xsd:string" use="required" />
+            <xsd:attribute name="type" type="xsd:string" use="required" />
+        </xsd:complexType>
+    </xsd:element>
+    
     <xsd:element name="tx-type-annotation-driven" />
 </xsd:schema>
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceTest.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/AbstractSpringNamespaceTest.java
similarity index 95%
rename from 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceTest.java
rename to 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/AbstractSpringNamespaceTest.java
index 368582d..1bafffb 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceTest.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/AbstractSpringNamespaceTest.java
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 import 
org.apache.shardingsphere.spring.transaction.ShardingTransactionTypeScanner;
 import org.junit.Test;
-import org.springframework.test.context.ContextConfiguration;
 import 
org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
 
 import javax.annotation.Resource;
@@ -40,8 +39,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
-@ContextConfiguration(locations = 
"classpath:META-INF/spring/application-context.xml")
-public final class SpringNamespaceTest extends 
AbstractJUnit4SpringContextTests {
+public abstract class AbstractSpringNamespaceTest extends 
AbstractJUnit4SpringContextTests {
     
     @Resource
     private ShardingSphereDataSource dataSource;
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/mode/config/StandalonePersistRepositoryConfiguration.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceForMemoryModeTest.java
similarity index 66%
copy from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/mode/config/StandalonePersistRepositoryConfiguration.java
copy to 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceForMemoryModeTest.java
index d6bdfec..d5566a1 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/mode/config/StandalonePersistRepositoryConfiguration.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceForMemoryModeTest.java
@@ -15,21 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.mode.config;
+package org.apache.shardingsphere.spring;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import org.springframework.test.context.ContextConfiguration;
 
-import java.util.Properties;
-
-/**
- * Standalone persist repository configuration.
- */
-@RequiredArgsConstructor
-@Getter
-public class StandalonePersistRepositoryConfiguration implements 
PersistRepositoryConfiguration {
-    
-    private final String type;
-    
-    private final Properties props;
+@ContextConfiguration(locations = 
"classpath:META-INF/spring/memory-application-context.xml")
+public final class SpringNamespaceForMemoryModeTest extends 
AbstractSpringNamespaceTest {
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/mode/config/StandalonePersistRepositoryConfiguration.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceForStandaloneModeTest.java
similarity index 66%
copy from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/mode/config/StandalonePersistRepositoryConfiguration.java
copy to 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceForStandaloneModeTest.java
index d6bdfec..2dffa57 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/mode/config/StandalonePersistRepositoryConfiguration.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/java/org/apache/shardingsphere/spring/SpringNamespaceForStandaloneModeTest.java
@@ -15,21 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.mode.config;
+package org.apache.shardingsphere.spring;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import org.springframework.test.context.ContextConfiguration;
 
-import java.util.Properties;
-
-/**
- * Standalone persist repository configuration.
- */
-@RequiredArgsConstructor
-@Getter
-public class StandalonePersistRepositoryConfiguration implements 
PersistRepositoryConfiguration {
-    
-    private final String type;
-    
-    private final Properties props;
+@ContextConfiguration(locations = 
"classpath:META-INF/spring/standalone-application-context.xml")
+public final class SpringNamespaceForStandaloneModeTest extends 
AbstractSpringNamespaceTest {
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/included/data-sources-context.xml
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/included/data-sources-context.xml
new file mode 100644
index 0000000..770b78c
--- /dev/null
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/included/data-sources-context.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           
http://www.springframework.org/schema/beans/spring-beans.xsd
+                           ">
+    
+    <bean id="ds_0_write" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
+    <bean id="ds_0_read_0" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
+    <bean id="ds_0_read_1" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
+    <bean id="ds_1_write" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
+    <bean id="ds_1_read_0" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
+    <bean id="ds_1_read_1" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
+</beans>
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/application-context.xml
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/included/rules-context.xml
similarity index 70%
rename from 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/application-context.xml
rename to 
shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/included/rules-context.xml
index 1083d36..2c30449 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/application-context.xml
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/included/rules-context.xml
@@ -18,17 +18,11 @@
 
 <beans xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       xmlns:context="http://www.springframework.org/schema/context";
-       
xmlns:shardingsphere="http://shardingsphere.apache.org/schema/shardingsphere/datasource";
        
xmlns:sharding="http://shardingsphere.apache.org/schema/shardingsphere/sharding";
        
xmlns:readwrite-splitting="http://shardingsphere.apache.org/schema/shardingsphere/readwrite-splitting";
        
xmlns:encrypt="http://shardingsphere.apache.org/schema/shardingsphere/encrypt";
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            
http://www.springframework.org/schema/beans/spring-beans.xsd
-                           http://www.springframework.org/schema/context 
-                           
http://www.springframework.org/schema/context/spring-context.xsd
-                           
http://shardingsphere.apache.org/schema/shardingsphere/datasource
-                           
http://shardingsphere.apache.org/schema/shardingsphere/datasource/datasource.xsd
                            
http://shardingsphere.apache.org/schema/shardingsphere/sharding
                            
http://shardingsphere.apache.org/schema/shardingsphere/sharding/sharding.xsd
                            
http://shardingsphere.apache.org/schema/shardingsphere/readwrite-splitting
@@ -36,15 +30,6 @@
                            
http://shardingsphere.apache.org/schema/shardingsphere/encrypt 
                            
http://shardingsphere.apache.org/schema/shardingsphere/encrypt/encrypt.xsd
                            ">
-    <context:property-placeholder location="classpath:conf/conf.properties" />
-    
-    <bean id="ds_0_write" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
-    <bean id="ds_0_read_0" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
-    <bean id="ds_0_read_1" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
-    <bean id="ds_1_write" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
-    <bean id="ds_1_read_0" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
-    <bean id="ds_1_read_1" 
class="org.apache.shardingsphere.test.mock.MockedDataSource" />
-    
     <sharding:sharding-algorithm id="dataSourceShardingAlgorithm" 
type="INLINE">
         <props>
             <prop key="algorithm-expression">ds_$->{user_id % 2}</prop>
@@ -81,13 +66,4 @@
         <readwrite-splitting:data-source-rule id="ds_0" 
write-data-source-name="ds_0_write" 
read-data-source-names="ds_0_read_0,ds_0_read_1" />
         <readwrite-splitting:data-source-rule id="ds_1" 
write-data-source-name="ds_1_write" 
read-data-source-names="ds_1_read_0,ds_1_read_1" />
     </readwrite-splitting:rule>
-    
-    <shardingsphere:data-source id="dataSource" schema-name="logic_db" 
data-source-names="ds_0_write,ds_0_read_0,ds_0_read_1,ds_1_write,ds_1_read_0,ds_1_read_1"
 rule-refs="shardingRule, readWriteSplittingRule, encryptRule">
-        <props>
-            <prop key="sql-show">false</prop>
-            <prop key="executor-size">${executor-size}</prop>
-        </props>
-    </shardingsphere:data-source>
-    
-    <shardingsphere:tx-type-annotation-driven />
 </beans>
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/memory-application-context.xml
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/memory-application-context.xml
new file mode 100644
index 0000000..939ac1f
--- /dev/null
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/memory-application-context.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns:context="http://www.springframework.org/schema/context";
+       
xmlns:shardingsphere="http://shardingsphere.apache.org/schema/shardingsphere/datasource";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           
http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://www.springframework.org/schema/context 
+                           
http://www.springframework.org/schema/context/spring-context.xsd
+                           
http://shardingsphere.apache.org/schema/shardingsphere/datasource
+                           
http://shardingsphere.apache.org/schema/shardingsphere/datasource/datasource.xsd
+                           ">
+    <context:property-placeholder location="classpath:conf/conf.properties" />
+    
+    <import resource="included/data-sources-context.xml" />
+    <import resource="included/rules-context.xml" />
+    
+    <shardingsphere:data-source id="dataSource" schema-name="logic_db" 
data-source-names="ds_0_write,ds_0_read_0,ds_0_read_1,ds_1_write,ds_1_read_0,ds_1_read_1"
 rule-refs="shardingRule, readWriteSplittingRule, encryptRule">
+        <props>
+            <prop key="sql-show">false</prop>
+            <prop key="executor-size">${executor-size}</prop>
+        </props>
+    </shardingsphere:data-source>
+    
+    <shardingsphere:tx-type-annotation-driven />
+</beans>
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/standalone-application-context.xml
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/standalone-application-context.xml
new file mode 100644
index 0000000..753894d
--- /dev/null
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-namespace/src/test/resources/META-INF/spring/standalone-application-context.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns:context="http://www.springframework.org/schema/context";
+       
xmlns:shardingsphere="http://shardingsphere.apache.org/schema/shardingsphere/datasource";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           
http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://www.springframework.org/schema/context 
+                           
http://www.springframework.org/schema/context/spring-context.xsd
+                           
http://shardingsphere.apache.org/schema/shardingsphere/datasource
+                           
http://shardingsphere.apache.org/schema/shardingsphere/datasource/datasource.xsd
+                           ">
+    <context:property-placeholder location="classpath:conf/conf.properties" />
+
+    <import resource="included/data-sources-context.xml" />
+    <import resource="included/rules-context.xml" />
+    
+    <shardingsphere:mode-repository id="local" type="Local">
+        
+    </shardingsphere:mode-repository>
+    
+    <shardingsphere:data-source id="dataSource" schema-name="logic_db" 
data-source-names="ds_0_write,ds_0_read_0,ds_0_read_1,ds_1_write,ds_1_read_0,ds_1_read_1"
 rule-refs="shardingRule, readWriteSplittingRule, encryptRule">
+        <shardingsphere:mode type="Standalone" repository-ref="local" 
overwrite="true" />
+        <props>
+            <prop key="sql-show">false</prop>
+            <prop key="executor-size">${executor-size}</prop>
+        </props>
+    </shardingsphere:data-source>
+    
+    <shardingsphere:tx-type-annotation-driven />
+</beans>
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/constants/RegistryCenterConfigurationBeanDefinitionTag.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/constants/Regist
 [...]
index 6dc2c4b..2e343bc 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/constants/RegistryCenterConfigurationBeanDefinitionTag.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/constants/RegistryCenterConfigurationBeanDefinitionTag.java
@@ -34,5 +34,5 @@ public final class 
RegistryCenterConfigurationBeanDefinitionTag {
     
     public static final String SERVER_LISTS_ATTRIBUTE = "server-lists";
     
-    public static final String PROP_TAG = "props";
+    public static final String PROPS_TAG = "props";
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/parser/RegistryCenterConfigurationBeanDefinitionParser.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/parser/RegistryC
 [...]
index 23e6995..9e7968a 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/parser/RegistryCenterConfigurationBeanDefinitionParser.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-governance-spring/shardingsphere-jdbc-governance-spring-namespace/src/main/java/org/apache/shardingsphere/spring/namespace/governance/parser/RegistryCenterConfigurationBeanDefinitionParser.java
@@ -44,7 +44,7 @@ public final class 
RegistryCenterConfigurationBeanDefinitionParser extends Abstr
     }
     
     private Properties parseProperties(final Element element, final 
ParserContext parserContext) {
-        Element propsElement = DomUtils.getChildElementByTagName(element, 
RegistryCenterConfigurationBeanDefinitionTag.PROP_TAG);
+        Element propsElement = DomUtils.getChildElementByTagName(element, 
RegistryCenterConfigurationBeanDefinitionTag.PROPS_TAG);
         return null == propsElement ? new Properties() : 
parserContext.getDelegate().parsePropsElement(propsElement);
     }
 }

Reply via email to