我知道${...}注释只要包含对其他属性的引用就可以使用。 但是,我想扩展该解析算法。 这是属性文件: 第二行仍然可以工作,并将readTimeout设置为15000,但是我想让第3行工作。 我不得不说,我不在乎我使用什么前缀和后缀,上面的示例使用%{...} ,但是使它工作的 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我正在使用PropertySourcesPlaceholderConfigurer访问包含2个值的文件:key1 = value1 key2 = value2。
<bean id="mainProperties"
class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer" id="">
<property name="locations">
<list>
<value>file:datafile.properties</value>
</list>
</property>
</bean>
然后使用MethodInvokingFactoryBean将datafile.properties中的值设置为系统属性。
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<!-- System.getProperties() -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="java.lang.System" />
<property name="targetMethod" value="getProperties" />
</bean>
</property>
<property name="targetMethod"
value="putAll" />
<property name="arguments">
<!-- The new Properties -->
<util:properties>
<prop key="my.key1">${key1}</prop>
<prop key="my.key2">${key2}</prop>
</util:properties>
</property>
</bean>
问题-$ {key1}和$ {key2}无法解析。 我期望这些值将得到解决,因为我正在使用PropertySourcesPlaceholderConfigurer加载datafile.properties。 有人可以帮忙吗?
我是春季初学者。 我的解决方案是:
datafile.properties
: key1=Hellow
key2=world.
<bean id="propertySources"
class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<array>
<value>/WEB-INF/jdbc.properties</value>
<value>/WEB-INF/datafile.properties</value>
</array>
</property>
</bean>
<bean id="sysProps"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="java.lang.System"/>
<property name="targetMethod" value="getProperties"/>
</bean>
<bean id="myNewProps"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="sysProps"/>
<property name="targetMethod" value="putAll"/>
<property name="arguments">
<map>
<entry key="my.key1" value="${key1}"/>
<entry key="my.key2" value="${key2}"/>
</map>
</property
</bean>
MainController.java
: @RequestMapping(value = "/", method = RequestMethod.GET)
public String home() {
//...
Properties prop = System.getProperties();
String myKey1 = prop.getProperty("my.key1");
String myKey2 = prop.getProperty("my.key2");
System.out.println("\nProperties:\n my.key1 = " + myKey1 +
"\n my.key2 = " + myKey2);
//...
}
控制台输出:
Properties:
my.key1 = Hellow
my.key2 = world.
当使用两个placeholderConfigurers时,可能会导致异常: Could not resolve placeholder 'key1' in string value "${key1}"
。 每个使用的placeholderConfigurer必须具有不同的占位符。
例如:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/jdbc.properties"/>
</bean>
<!-- default placeholder ${ } -->
<bean id="propertySources"
class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<array>
<value>file:datafile.properties</value>
</array>
</property>
<property name="placeholderPrefix" value="#["></property>
<property name="placeholderSuffix" value="]"></property>
</bean>
<!-- placeholder #[ ] for datafile.properties -->
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.