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

没有springboot的spring框架中的YAML列表

松正阳
2023-03-14
NOTE: NO SpringBoot.  
      ONLY Sprint Framework.

如何将YAML列表加载到Spring框架项目中的Java列表(没有springboot)?

我看到它在springboot项目中与@ConfigurationProperties一起工作。但我无法让它在纯spring框架项目中使用@Value。似乎@Value注释无法正确解析列表。

下面是一个示例项目:https://github.com/KiranMohan/spring-yaml.
为了加载yaml文件,我使用了YamlProperties tiesFactoryBean
代码在jUnit示例测试类中进行测试。
输出log.debug("myList: {}", example.getMyList());is
DEBUG[main]org.ktest.示例测试:myList:[${example.myList}]

示例yaml:

example:
  enabled: true
  name: "org.ktest"
  myArray: >
    abc,
    def

  myList:
    - "ghi"
    - "jkl"
    

示例代码:

@Configuration
@PropertySource(value = "classpath:example.yml", factory = YamlPropertySourceFactory.class)
public class Example {

    @Value("${example.enabled}")
    private boolean enabled;
    @Value("${example.name}")
    private String name;
    @Value("${example.myArray}")
    private String[] myArray;
    @Value("${example.myList}")
    private List<String> myList;

共有1个答案

陶裕
2023-03-14

您的YamlPropertySourceFactory使用YAMLPropertySFactoryBean其Javadoc声明

列表被拆分为带有[]解引用器的属性键,例如:

 servers:
 - dev.bar.com
 - foo.bar.com. 

变成这样的属性:

servers[0]=dev.bar.com  
servers[1]=foo.bar.com

这里的Spring文档中也提到了这一点。

换言之,使用这些类型,您无法提供示例。通过属性解析,我将YAML元素列成一个列表。只能访问单个元素,如

@Value("${example.myList[0]}")
private String myListFirstElement;

这里的Spring留档也提到了这一点。它暗示

使用[index]符号的属性可以使用Spring Boot的活页夹类绑定到Java列表集合对象。

您可以尝试查看该类是如何实现的,并在自己的代码中重现它。

 类似资料:
  • 我正在尝试使用@ConfigurationProperties注释将对象列表绑定到实体类。Spring Boot框架似乎忽略了这个注释,实际上它什么都不做。 这是我的申请表。yml属性文件: 这是我的实体类: 绑定非常简单: 在应用程序的某个地方,我正在测试该绑定,比如说我在API中创建了endpoint来测试该绑定,即我的控制器调用一个只打印列表中所有对象的方法: 预期: 启动后,Applica

  • 问题内容: 有谁知道如何使ajax请求功能能够跨浏览器而无需使用jQuery等JavaScript框架? 问题答案: 该对象实际上并没有那么复杂。为了广泛兼容,您必须玩一些游戏才能创建对象,但是在此之后,对于简单操作而言,这是相当简单的。 Microsoft在MSDN页面上具有的示例,其中包括用于以跨浏览器方式创建对象的功能,该功能支持IE的早期版本。这是他们的例子: 我并不是说上面的示例是最佳实

  • 本文向大家介绍Springboot中集成Swagger2框架的方法,包括了Springboot中集成Swagger2框架的方法的使用技巧和注意事项,需要的朋友参考一下 摘要:在项目开发中,往往期望做到前后端分离,也就是后端开发人员往往需要输出大量的服务接口,接口的提供方无论是是Java还是PHP等语言,往往会要花费一定的精力去写接口文档,比如A接口的地址、需要传递参数情况、返回值的JSON数据格式

  • 问题内容: 有没有像spring这样的android应用程序框架? 问题答案: 查看roboguice:http : //code.google.com/p/roboguice/ 顺便说一句,没有什么可以阻止您使用spring-因为这是纯java框架。但是它很重,可能出于您的目的而过度使用。 问题是-您想注入什么依赖关系?

  • 我已经尝试重新导入Maven,但没有结果。任何建议将不胜感激。

  • 我只是在练习msdn中的代码第一个新数据库实体框架,我想知道是否可以在代码第一个新数据库EF中创建没有主键的表?