Lic*_*ici 13 spring properties
我想使用Spring属性占位符填充bean列表属性.
<bean name="XXX" class="XX.YY.Z">
<property name="urlList">
<value>${prop.list}</value>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
prop.list.one=foo
prop.list.two=bar
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激
Chs*_*y76 12
使用util:properties元素加载属性.您可以使用PropertyPlaceholderConfigurer指定文件的路径:
<bean name="XXX" class="XX.YY.Z">
<property name="urlList">
<util:properties location="${path.to.properties.file}"/>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
更新我误解了这个问题; 您只想返回键以特定字符串开头的属性.实现这一目标的最简单方法是在bean的setter方法中实现.您必须将字符串作为单独的属性传递给您的bean.扩展上述声明:
<bean name="XXX" class="XX.YY.Z" init-method="init">
<property name="propertiesHolder">
<!-- not sure if location has to be customizable here; set it directly if needed -->
<util:properties location="${path.to.properties.file}"/>
</property>
<property name="propertyFilter" value="${property.filter}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
在你的XX.YY.Zbean中:
private String propertyFilter;
private Properties propertiesHolder;
private List<String> urlList;
// add setter methods for propertyFilter / propertiesHolder
// initialization callback
public void init() {
urlList = new ArrayList<String>();
for (Enumeration en = this.propertiesHolder.keys(); en.hasMoreElements(); ) {
String key = (String) en.nextElement();
if (key.startsWith(this.propertyFilter + ".") { // or whatever condition you want to check
this.urlList.add(this.propertiesHolder.getProperty(key));
}
} // for
}
Run Code Online (Sandbox Code Playgroud)
如果需要在许多不同的地方执行此操作,可以将上述功能包装到FactoryBean中.
小智 10
更简单的解决方案:
class Z {
private List<String> urlList;
// add setters and getters
}
Run Code Online (Sandbox Code Playgroud)
你的bean定义
<bean name="XXX" class="XX.YY.Z">
<property name="urlList" value="#{'${prop.list}'.split(',')}"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
然后在你的属性文件中:
prop.list=a,b,c,d
Run Code Online (Sandbox Code Playgroud)
<bean id="cpaContextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="urls">
<bean class="org.springframework.util.CollectionUtils" factory-method="arrayToList">
<constructor-arg type="java.lang.Object">
<bean class="org.springframework.util.StringUtils" factory-method="tokenizeToStringArray">
<constructor-arg type="java.lang.String" value="${myList}"/>
<constructor-arg type="java.lang.String" value=" "/>
</bean>
</constructor-arg>
</bean>
</property>
Run Code Online (Sandbox Code Playgroud)
哪里:
myList=http://aaa http://bbb http://ccc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49148 次 |
| 最近记录: |