Momentan habe ich eine Spring-XML-Konfiguration (Spring 4), die eine Eigenschaftendatei lädt.Spring-Platzhalter löst keine Eigenschaften in JavaConfig auf
context.properties
my.app.service = myService
my.app.other = ${my.app.service}/sample
Frühling xml Konfiguration
<bean id="contextProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="ignoreResourceNotFound" value="true" />
<property name="fileEncoding" value="UTF-8" />
<property name="locations">
<list>
<value>classpath:context.properties</value>
</list>
</property>
</bean>
<bean id="placeholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true" />
<property name="properties" ref="contextProperties" />
<property name="nullValue" value="@null" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
</bean>
Bean, die
@Component
public class MyComponent {
@Value("${my.app.other}")
private String others;
}
Das funktioniert perfekt und der others
Wert MyService/sample
die Eigenschaften verwenden, da vorbehalten. Aber wenn ich versuche, diese Konfiguration durch eine JavaConfig zu ersetzen, funktioniert die @Value
in meiner Komponente nicht auf die gleiche Weise. Der Wert ist nicht myService/sample
sondern ${my.app.service}/sample
.
@Configuration
@PropertySource(name="contextProperties", ignoreResourceNotFound=true, value={"classpath:context.properties"})
public class PropertiesConfiguration {
@Bean
public static PropertyPlaceholderConfigurer placeholder() throws IOException {
PropertyPlaceholderConfigurer placeholder = new PropertyPlaceholderConfigurer();
placeholder.setNullValue("@null");
placeholder.setSystemPropertiesMode(PropertyPlaceholderConfigurer.SYSTEM_PROPERTIES_MODE_OVERRIDE);
return placeholder;
}
}
Habe ich etwas in der Konvertierung von XML nach Javaconfig vermisst?
ps: Ich versuche auch eine PropertySourcesPlaceholderConfigurer
statt einer PropertyPlaceholderConfigurer
ohne Erfolg zu instanziieren.
Auch wenn es Ihr Problem nicht löst, kann ich bestätigen, dass Sie 'PropertySourcesPlaceholderConfigurer', nicht' PropertyPlaceholderConfigurer' verwenden sollten – superbob
Kann die 'my.app.service' -Eigenschaft ordnungsgemäß aufgelöst werden? Überprüfen Sie mit einem '@Value (" $ {my.app.service} ")', ich wandern, wenn das Problem von der Eigenschaftsverschachtelung kommt. – superbob