1

Spring(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 表达式时,它似乎丢失了。

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

已经检查:

4

2 回答 2

1

解决方案:

多行属性需要在每行末尾有一个反斜杠。

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

(很抱歉,我无法在此处显示不可见字符 :),所以我无法提供示例)

警告:更多的是关于 Java 属性文件的不当使用!Properties.load()您可以在不使用 Spring (plain )的 @Value 功能的情况下遇到此问题。

于 2013-06-07T09:05:43.397 回答
0

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

lines=foo \
bar \
baz

.

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

.

foo bar baz
于 2013-06-03T17:37:28.050 回答