Spring @Value具有multimine属性文件值

时间:2013-06-03 16:28:01

标签: java spring spring-el

春天(3.1): 给定具有多行值的属性文件(当然实际值更大):

requestStatuses=select sysdate \
from dual

我按照描述设置了Spring:

<util:properties id="sql_lookup_data_repo"
     location="classpath:sql_lookup_data_repo.properties"/>

按照描述使用:

  @Value("#{sql_lookup_data_repo.requestStatuses}")
  public void setRequestStatuses(String requestStatuses) {
    this.requestStatuses = requestStatuses;
  }

乍一看似乎工作但只读取第一行属性值

当spring正在启动时,它正在正确读取文件(已调试)。 在评估SpEL表达式时似乎丢失了它。

是否可以将此弹簧功能用于多行属性文件值以及如何使用?

已经检查过:

2 个答案:

答案 0 :(得分:1)

解决方案:

多行属性需要在每行末尾加上反斜杠。

但是如果你在反斜杠之后(在换行符之前)有空格(不可见!),评估将在那时停止。

(很抱歉,我不能在这里看到隐形字符:),所以我无法提供示例)

警告:更多是关于不正确使用Java属性文件!你可以在不使用Spring的@Value特性(普通Properties.load())的情况下遇到这个问题。

答案 1 :(得分:0)

这对我来说很好......

lines=foo \
bar \
baz

@Value("#{fooprops.lines}")
public void setMultiLine(String lines) {
    System.out.println(lines);
}

foo bar baz