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

Spring Boot:使用@value或@configurationproperties从yaml读取列表

纪秋月
2023-03-14
cors:
    hosts:
        allow: 
            - http://foo1/
            - http://foo2/
            - http://foo3/
@Value("${cors.hosts.allow}")   
List<String> allowedHosts;

java.lang.IllegalArgumentException:无法解析字符串值“${cors.hosts.allow}”中的占位符“cors.hosts.allow”

当我这样更改文件时,属性可以被读取,但它自然不包含列表,而只包含一个条目:

cors:
    hosts:
        allow: http://foo1, http://foo2, http://foo3

(我知道我可以将值作为单行读取,并将它们按“、”拆分,但我还不想采用变通方法)

这也不起作用(尽管我认为根据snakeyamls文档,这应该是有效的):

cors:
    hosts:
        allow: !!seq [ "http://foo1", "http://foo2" ] 

(跳过!!seq而只使用[/]也是失败的)

我阅读了这里的建议,其中涉及到使用@configurationproperties并将该示例转移到Java中,并将其与示例1中看到的yaml文件一起使用:

@Configuration
@EnableWebMvc
@ConfigurationProperties(prefix = "cors.hosts")
public class CorsConfiguration extends WebMvcConfigurerAdapter {
    @NotNull
    public List<String> allow;
...

我搜索了其他方法,使我的CORS主机可配置,并找到了这个Spring启动问题,但由于这还没有完成,我不能使用它作为一个解决方案。所有这些都是用Spring Boot 1.3 RC1完成的

共有1个答案

燕烨
2023-03-14

在application.yml中使用逗号分隔的值

corsHostsAllow: http://foo1/, http://foo2/, http://foo3/

用于access的java代码

@Value("${corsHostsAllow}")    
String[] corsHostsAllow

我尝试并成功了;)

 类似资料:
  • 我正在尝试从application.yml.中检索值下面的最后一行显示kafkaConfig为null,无法读取。如何正确设置Kafka配置和代码以从json文件中读取?我们使用@Data而不是getters/setters。 KafkaConfig.java 应用yml公司 KafkaProducerBeans.java 资源:https://codingnconcepts.com/spring

  • 我想创建一个yaml文件,从中获取常量 ConstantConfiguration。yml公司 配置类如下所示: 这是一个我想要如何使用它的虚拟示例 <代码>恒定属性。getMyList()始终为空我使用的是spring boot:2.5.12和java 11

  • 我刚开始穿弹力靴。这就是我要解决的问题。我有一个application.yml文件,它具有以下属性: 我尝试使用以下代码访问KinesisSenderFeature的值: 以及 PropertySourcesPlaceHolderConfigureer bean定义为: 是的,我确实看到了: 将Yaml中的列表映射到Spring Boot中的对象列表 Spring boot YAML配置未读取所有

  • 我有以下问题。我根据一个给定的概要文件在yaml文件中读取的值创建一个数据源。 我当前的问题是,当我用“dev”配置文件启动应用程序时,serviceId的值是'my-prod-service'。 我在这里做错了什么?

  • 目前,我正在@PropertySouce上实现一个YAML文件,并在@Value上读取Property本身。但现在我的YAML文件中有一个多行属性,并希望以同样的方式读取它。(我想在代码之外存储sql查询) 我知道,我可以指出一个多行YAML字符串 我知道,我可以用反斜杠转义每一行,但这不是我的最佳解决方案。 因此,例如,我想在我的test.yml中阅读键“多线键”: 并想在我的代码中实现这个值如