spring - 使用 Spring 属性占位符从文件 .properties 中读取列表

标签 spring properties

我想使用 Spring 属性占位符填充 bean 列表属性。

上下文文件

<bean name="XXX" class="XX.YY.Z">
      <property name="urlList">
            <value>${prop.list}</value>
      </property>
</bean>

属性文件

prop.list.one=foo
prop.list.two=bar

任何帮助将不胜感激

最佳答案

使用 util:properties element加载您的属性。您可以使用 PropertyPlaceholderConfigurer 指定文件的路径:

<bean name="XXX" class="XX.YY.Z">
  <property name="urlList">
    <util:properties location="${path.to.properties.file}"/>
  </property>
</bean>

更新我误解了这个问题;您只想返回键以特定字符串开头的属性。实现这一目标的最简单方法是在 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>

在您的 XX.YY.Z bean 中:

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
}

如果您需要在许多不同的地方执行此操作,您可以将上述功能包装到 FactoryBean 中。

关于spring - 使用 Spring 属性占位符从文件 .properties 中读取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1599086/

相关文章:

spring - 如何使用spring处理后退浏览器按钮问题?

spring 在运行时导入模块在 bean 中被忽略

java - 有人知道如何将单个 Action 实例制作成struts 2吗?

c++ - QT:对 qApp 属性更改做一些事情

objective-c - 可以在 Objective C 中调用属性的释放吗?

c# - 创建公共(public)属性时使用私有(private)变量的目的是什么?

java - Spring+HibernateDAO DAO bean 未找到

spring - Spring 是否会在休息 Controller 中为每个请求创建新线程?

java - 使用 Java 绑定(bind)在 Selenium 中自动化本地化 Web 应用程序的方法

JavaBeans 替代品?