我正在使用XML文件来设置如下所示的依赖项:
<?xml version="1.0" encoding="UTF-8"?>
<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="aClassInstance" class="a.package.AClass">
<property name="prop1" value="${prop.1}" />
<property name="prop2" value="${prop.2}" />
</bean>
</beans>
我正在使用PropertySourcesPlaceholderConfigurer
将"${}"
占位符替换为*.properties
文件中的值。我希望能够在bean 中设置属性,只有 *.properties
文件中存在相应的属性。这可能吗?
答案 0 :(得分:0)
如果属性不存在,假设您需要默认值,那么您可以尝试以下方法:
<bean id="aClassInstance" class="a.package.AClass">
<property name="prop1" value="${prop.1:default}" />
<property name="prop2" value="${prop.2:default}" />
</bean>
答案 1 :(得分:0)
您可以在ignoreUnresolvablePlaceholders
上将true
设置为PropertySourcesPlaceholderConfigurer
,并且当*.properties
文件中缺少您尝试注入的属性时,它不会引发异常。
答案 2 :(得分:0)
PropertyOverrideConfigurer
允许您使用beanName.property = value
语法设置属性。如果属性文件中不存在特定属性,则Spring不会调用任何setter。
因此,您可以使用PropertySourcesPlaceholderConfigurer
替换构造函数中的占位符,并使用PropertyOverrideConfigurer
来设置可选属性。如果占位符与PropertyOverrideConfigurer.setIgnoreInvalidKeys(true)
语法不对应,则可以使用beanName.property
。