当前位置: 首页 > 知识库问答 >
问题:

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

公孙巴英
2023-03-14

目前,我正在@PropertySouce上实现一个YAML文件,并在@Value上读取Property本身。但现在我的YAML文件中有一个多行属性,并希望以同样的方式读取它。(我想在代码之外存储sql查询)

我知道,我可以指出一个多行YAML字符串

我知道,我可以用反斜杠转义每一行,但这不是我的最佳解决方案。

因此,例如,我想在我的test.yml中阅读键“多线键”:

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查询外包到自己的文件中并通过@Value轻松包含它们?

共有2个答案

贡斌
2023-03-14

由于flyx,yml文件未被解析为yaml文件。所以这个链接就是答案。

艾国安
2023-03-14

这对我来说很好:

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."
 类似资料:
  • 我正在为邮件服务配置创建一个组件 我的邮件属性文件看起来像 我试图获取端口值,但遇到了问题 是的,我知道这应该是一个整数值,但我的@Value注释已将**转换为字符串。所以我试了这个: ...一样的。 主机、用户名、密码等。装得好好的!如何获取我的端口值?为什么PropertySource没有自动转换这个参数?

  • Beans文件: 在BaseTest中,当调用)方法时,属性文件中的值起作用,但如果试图将该值用作中的变量,则该值为空。你能帮帮我吗?

  • 我试图只使用注释创建Spring bean。我无法从属性文件加载@Bean类的值。 下面是我的代码: 知道我做错了什么吗?

  • 问题内容: 我想在.properties文件中有一个值列表,即: 并将其直接加载到我的课程中,即: 据我了解,这样做的另一种方法是将其保存在spring config文件中,并将其作为bean引用加载(如果我错了,请更正我),即 但是有什么办法吗?使用.properties文件?ps:如果可能,我希望不使用任何自定义代码。 问题答案: 使用: 假设使用以下内容正确加载了属性文件:

  • 我们一直在使用Spring@Value注释来注入属性值。我们有一个约定来命名属性名称,以匹配它们注入的java字段。这带来了不必要的工作,即每个ConfigBean的java字段都需要用@Value注释。 我正在寻找一种方法,用新的注释注释java类(比如说ConfigBean),让一些后处理器读取这些bean的属性名称,并自动注入属性值。 我正在寻找一些关于如何在没有@Value注释的情况下实现