diff --git a/extensions/validation/src/test/resources/basic-validations.xml b/extensions/validation/src/test/resources/basic-validations.xml
index ba887d7e0b9..14d5ecc11e7 100644
--- a/extensions/validation/src/test/resources/basic-validations.xml
+++ b/extensions/validation/src/test/resources/basic-validations.xml
@@ -11,58 +11,55 @@
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
@@ -79,11 +76,11 @@
-
+
-
+
diff --git a/extensions/validation/src/test/resources/custom-validator.xml b/extensions/validation/src/test/resources/custom-validator.xml
index 1a50f6c8782..d333ee15263 100644
--- a/extensions/validation/src/test/resources/custom-validator.xml
+++ b/extensions/validation/src/test/resources/custom-validator.xml
@@ -5,11 +5,8 @@
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/validation http://www.mulesoft.org/schema/mule/validation/current/mule-validation.xsd">
-
-
-
-
+
diff --git a/extensions/validation/src/test/resources/number-validations.xml b/extensions/validation/src/test/resources/number-validations.xml
index d111133a5e0..b5802df0237 100644
--- a/extensions/validation/src/test/resources/number-validations.xml
+++ b/extensions/validation/src/test/resources/number-validations.xml
@@ -5,10 +5,8 @@
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/validation http://www.mulesoft.org/schema/mule/validation/current/mule-validation.xsd">
-
-
-
+
diff --git a/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/capability/xml/schema/SchemaBuilder.java b/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/capability/xml/schema/SchemaBuilder.java
index f3109a4128f..e7fe49aece4 100644
--- a/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/capability/xml/schema/SchemaBuilder.java
+++ b/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/capability/xml/schema/SchemaBuilder.java
@@ -632,7 +632,7 @@ private void registerOperationType(String name, Operation operation)
complexContentExtension.setBase(base);
complexContent.setExtension(complexContentExtension);
- Attribute configAttr = createAttribute(ATTRIBUTE_NAME_CONFIG, ATTRIBUTE_DESCRIPTION_CONFIG, false, SUBSTITUTABLE_NAME);
+ Attribute configAttr = createAttribute(ATTRIBUTE_NAME_CONFIG, ATTRIBUTE_DESCRIPTION_CONFIG, true, SUBSTITUTABLE_NAME);
complexContentExtension.getAttributeOrAttributeGroup().add(configAttr);
final ExplicitGroup all = new ExplicitGroup();
diff --git a/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/BaseResolverFactoryBean.java b/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/BaseResolverFactoryBean.java
deleted file mode 100644
index 21e49cd1266..00000000000
--- a/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/BaseResolverFactoryBean.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
- * The software in this package is published under the terms of the CPAL v1.0
- * license, a copy of which has been included with this distribution in the
- * LICENSE.txt file.
- */
-package org.mule.module.extension.internal.config;
-
-import org.mule.module.extension.internal.runtime.resolver.ConfigurationValueResolver;
-import org.mule.module.extension.internal.runtime.resolver.ValueResolver;
-
-import org.springframework.beans.factory.FactoryBean;
-
-abstract class BaseResolverFactoryBean implements FactoryBean
-{
- protected final String name;
- protected ElementDescriptor element;
- protected T valueResolver;
-
- BaseResolverFactoryBean(String name, ElementDescriptor element)
- {
- this.name = name;
- this.element = element;
- }
-
- protected abstract T createValueResolver();
-
- /**
- * Returns a {@link ConfigurationValueResolver}
- */
- @Override
- public T getObject() throws Exception
- {
- return valueResolver;
- }
-
- /**
- * @return {@value true}
- */
- @Override
- public boolean isSingleton()
- {
- return true;
- }
-}
diff --git a/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/ConfigurationBeanDefinitionParser.java b/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/ConfigurationBeanDefinitionParser.java
index 88d7446c2f0..fe212d44e6c 100644
--- a/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/ConfigurationBeanDefinitionParser.java
+++ b/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/ConfigurationBeanDefinitionParser.java
@@ -33,7 +33,7 @@ final class ConfigurationBeanDefinitionParser extends BaseExtensionBeanDefinitio
ConfigurationBeanDefinitionParser(Configuration configuration)
{
- super(ConfigurationFactoryBean.class);
+ super(ConfigurationInstanceProviderFactoryBean.class);
this.configuration = configuration;
}
diff --git a/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/ConfigurationFactoryBean.java b/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/ConfigurationFactoryBean.java
deleted file mode 100644
index 8343a8fe2e6..00000000000
--- a/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/ConfigurationFactoryBean.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
- * The software in this package is published under the terms of the CPAL v1.0
- * license, a copy of which has been included with this distribution in the
- * LICENSE.txt file.
- */
-package org.mule.module.extension.internal.config;
-
-import static org.mule.module.extension.internal.config.XmlExtensionParserUtils.getResolverSet;
-import org.mule.api.MuleContext;
-import org.mule.extension.introspection.Configuration;
-import org.mule.module.extension.internal.runtime.resolver.ConfigurationValueResolver;
-
-import org.springframework.beans.factory.FactoryBean;
-
-/**
- * A {@link FactoryBean} which returns a {@link ConfigurationValueResolver} that provides the actual instances
- * that implement a given {@link Configuration}. Subsequent invokations to {@link #getObject()} method
- * returns always the same {@link ConfigurationValueResolver}.
- *
- * @since 3.7.0
- */
-final class ConfigurationFactoryBean extends BaseResolverFactoryBean
-{
-
- private final Configuration configuration;
- private final MuleContext muleContext;
-
- ConfigurationFactoryBean(String name,
- Configuration configuration,
- ElementDescriptor element,
- MuleContext muleContext)
- {
- super(name, element);
- this.configuration = configuration;
- this.muleContext = muleContext;
- valueResolver = createValueResolver();
- }
-
- @Override
- protected ConfigurationValueResolver createValueResolver()
- {
- return new ConfigurationValueResolver(name,
- configuration,
- getResolverSet(element, configuration.getParameters()),
- muleContext);
- }
-
- /**
- * @return {@link ConfigurationValueResolver}
- */
- @Override
- public Class getObjectType()
- {
- return ConfigurationValueResolver.class;
- }
-}
diff --git a/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/ConfigurationInstanceProviderFactoryBean.java b/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/ConfigurationInstanceProviderFactoryBean.java
new file mode 100644
index 00000000000..4d2221b496e
--- /dev/null
+++ b/modules/extensions-spring-support/src/main/java/org/mule/module/extension/internal/config/ConfigurationInstanceProviderFactoryBean.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
+ * The software in this package is published under the terms of the CPAL v1.0
+ * license, a copy of which has been included with this distribution in the
+ * LICENSE.txt file.
+ */
+package org.mule.module.extension.internal.config;
+
+import static org.mule.MessageExchangePattern.REQUEST_RESPONSE;
+import static org.mule.module.extension.internal.config.XmlExtensionParserUtils.getResolverSet;
+import org.mule.DefaultMuleEvent;
+import org.mule.DefaultMuleMessage;
+import org.mule.api.MuleContext;
+import org.mule.api.MuleEvent;
+import org.mule.api.MuleRuntimeException;
+import org.mule.api.construct.FlowConstruct;
+import org.mule.extension.introspection.Configuration;
+import org.mule.extension.runtime.ConfigurationInstanceProvider;
+import org.mule.module.extension.internal.runtime.ConfigurationObjectBuilder;
+import org.mule.module.extension.internal.runtime.DynamicConfigurationInstanceProvider;
+import org.mule.module.extension.internal.runtime.StaticConfigurationInstanceProvider;
+import org.mule.module.extension.internal.runtime.resolver.ResolverSet;
+
+import org.springframework.beans.factory.FactoryBean;
+
+/**
+ * A {@link FactoryBean} which returns a {@link ConfigurationInstanceProvider} that provides the actual instances
+ * that implement a given {@link Configuration}. Subsequent invokations to {@link #getObject()} method
+ * returns always the same {@link ConfigurationInstanceProvider}.
+ *
+ * @since 3.7.0
+ */
+final class ConfigurationInstanceProviderFactoryBean implements FactoryBean>
+{
+
+ private final ConfigurationInstanceProvider