Spring -读取多行属性值超过@Value的YAML

sy5wg1nm  于 2023-02-11  发布在  Spring
关注(0)|答案(3)|浏览(141)

目前我在@PropertySource上实现YAML文件,并在@Value上读取属性本身。但现在我的YAML文件中有一个多行属性,并希望以相同的方式读取它。(我希望将SQL查询存储在代码之外)
我知道,我可以通过"〉"或"〉-"或"|"。但是当我尝试这样做并在@Value上读取属性时,我只得到了"〉"作为String中的结果。那么,有没有办法完全读取多行YAML属性呢?
我知道,我可以用反斜杠转义每一行,但这对我来说不是最好的解决方案。
例如,我想读取test.yml中的键"multilinekey":

multilinekey: >
   Hi, I am a multiline String.
   But I can't get readed over @Value by spring.

并希望在我代码中实现此值,如下所示:

@PropertySource("classpath:/test.yml")
public class myTestClass
   @Value("${multilinekey}")
   private String multiline;

   ...
}

有什么办法可以做到吗?
或者有没有一个更好的方法来外包我的sql查询在自己的文件,并包括他们容易超过 @Values ?

b4qexyjb

b4qexyjb1#

这对我来说很好:
controller.java

@Value("${str}")
String str;

@GetMapping("/probe")
public String probe(){
    return str;
}

application.yaml

str:"This is a very long sentence
    that spans several lines in the YAML
    but which will be rendered as a string
    with NO carriage returns."
avwztpqn

avwztpqn2#

多亏了flyx,yml文件没有被解析为yaml文件。所以这个链接就是答案。

wwodge7n

wwodge7n3#

this answer中所述,正确的方法是使用引号和\

spring:
  datasource:
    url: "jdbc:postgresql:\
    //localhost:5432/my-database"

相关问题