Context namespace exposes value-separator attribute for property-placeholder element

Issue: SPR-7794
This commit is contained in:
Juergen Hoeller
2015-09-23 22:39:23 +02:00
parent c7fd4ccf48
commit a23629f60f
5 changed files with 41 additions and 25 deletions

View File

@@ -38,6 +38,7 @@ import static org.junit.Assert.*;
* @author Arjen Poutsma
* @author Dave Syer
* @author Chris Beams
* @author Juergen Hoeller
* @since 2.5.6
*/
public class ContextNamespaceHandlerTests {
@@ -55,8 +56,7 @@ public class ContextNamespaceHandlerTests {
Map<String, PlaceholderConfigurerSupport> beans = applicationContext
.getBeansOfType(PlaceholderConfigurerSupport.class);
assertFalse("No PropertyPlaceholderConfigurer found", beans.isEmpty());
String s = (String) applicationContext.getBean("string");
assertEquals("bar", s);
assertEquals("bar", applicationContext.getBean("string"));
assertEquals("null", applicationContext.getBean("nullString"));
}
@@ -69,11 +69,11 @@ public class ContextNamespaceHandlerTests {
Map<String, PropertyPlaceholderConfigurer> beans = applicationContext
.getBeansOfType(PropertyPlaceholderConfigurer.class);
assertFalse("No PropertyPlaceholderConfigurer found", beans.isEmpty());
String s = (String) applicationContext.getBean("string");
assertEquals("spam", s);
assertEquals("spam", applicationContext.getBean("string"));
assertEquals("none", applicationContext.getBean("fallback"));
}
finally {
if (value!=null) {
if (value != null) {
System.setProperty("foo", value);
}
}
@@ -89,8 +89,8 @@ public class ContextNamespaceHandlerTests {
Map<String, PlaceholderConfigurerSupport> beans = applicationContext
.getBeansOfType(PlaceholderConfigurerSupport.class);
assertFalse("No PropertyPlaceholderConfigurer found", beans.isEmpty());
String s = (String) applicationContext.getBean("string");
assertEquals("spam", s);
assertEquals("spam", applicationContext.getBean("string"));
assertEquals("none", applicationContext.getBean("fallback"));
}
@Test
@@ -100,12 +100,9 @@ public class ContextNamespaceHandlerTests {
Map<String, PropertyPlaceholderConfigurer> beans = applicationContext
.getBeansOfType(PropertyPlaceholderConfigurer.class);
assertFalse("No PropertyPlaceholderConfigurer found", beans.isEmpty());
String s = (String) applicationContext.getBean("foo");
assertEquals("bar", s);
s = (String) applicationContext.getBean("bar");
assertEquals("foo", s);
s = (String) applicationContext.getBean("spam");
assertEquals("maps", s);
assertEquals("bar", applicationContext.getBean("foo"));
assertEquals("foo", applicationContext.getBean("bar"));
assertEquals("maps", applicationContext.getBean("spam"));
}
@Test
@@ -115,8 +112,7 @@ public class ContextNamespaceHandlerTests {
Map<String, PlaceholderConfigurerSupport> beans = applicationContext
.getBeansOfType(PlaceholderConfigurerSupport.class);
assertFalse("No PropertyPlaceholderConfigurer found", beans.isEmpty());
String s = (String) applicationContext.getBean("string");
assertEquals("${bar}", s);
assertEquals("${bar}", applicationContext.getBean("string"));
assertEquals("null", applicationContext.getBean("nullString"));
}

View File

@@ -11,4 +11,8 @@
<constructor-arg value="${foo}"/>
</bean>
<bean id="fallback" class="java.lang.String">
<constructor-arg value="${bar:none}"/>
</bean>
</beans>

View File

@@ -2,18 +2,22 @@
<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:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
<util:properties id="placeholderProps">
<prop key="foo">bar</prop>
</util:properties>
<context:property-placeholder properties-ref="placeholderProps" system-properties-mode="OVERRIDE"/>
<context:property-placeholder properties-ref="placeholderProps" system-properties-mode="OVERRIDE" value-separator="?"/>
<bean id="string" class="java.lang.String">
<constructor-arg value="${foo}"/>
</bean>
<bean id="fallback" class="java.lang.String">
<constructor-arg value="${bar?none}"/>
</bean>
</beans>