我有不同属性的application.yml如下所示。
lists:
exampleList: [1,2,3]
exampleString: abcde
another:
example1: exam1
example2: exam2
我使用@ConfigurationProperties将这些属性绑定到Spring组件
@Data
@Component
@ConfigurationProperties
public class ExampleConfig {
private Map<String,Object> lists;
}
我将在Spring Boot控制器中注入此组件,并将此配置绑定到get-configsendpoint/控制器/配置
调用此endpoint时,期望返回
{
"lists": {
"exampleList": ["1", "2", "3"],
"exampleString": "abcde"
"another": {
"example1": "exam1",
"example2": "exam2"
}
}
}
而是返回如下所示的响应
{
"lists": {
"exampleList": {
"0" : "1",
"1" : "2",
"2" : "3"
}
"exampleString": "abcde"
"another": {
"example1": "exam1",
"example2": "exam2"
}
}
}
yml中的列表正在映射到Map中的对象。我们如何实现对各自数据类型的正确绑定?
感谢您的帮助!
有一个更复杂的解决方案可用。您可以使用一个简单的Java DTO来表示配置的结构,而不是将所有配置注入映射。
使用ConfigurationProperties将配置注入Java DTO,并从控制器endpoint返回JavaDTO。
提到https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-具有外部配置类型安全配置属性
Spring boot actuatorendpoint还有一个名为configprops的特定endpoint,它提供了所有配置属性。然而,如果你想使用它,你可能需要进行大量的定制。有关详细信息https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html
我需要注入地图
我知道我可以使用以下语法从属性文件中注入值: 然而,如果配置在YAML文件中,我猜不出如何实现同样的功能。 提前谢谢,
我做错了什么?我正在使用这个小型独立应用程序,它运行并查找我的。相同的配置在JUnit中不起作用,请参阅下面: 以下不起作用,中的相同属性未加载并且只有值:
我有一段扫描Spring上下文的代码: 我需要从文件,所以在类中,我有: (我从这里复制了YamlProperty tyLoaderFactory类) 是一个典型的Spring Boot文件,其中包含一些配置文件属性和默认配置文件: 在某些bean中,我使用读取属性。 当我运行我的应用程序,我传递变量,但我得到一个错误: 无法解析值“${file}”中的占位符“file” (由于applicati
我在下有一个测试属性文件。但是我无法在我的单元测试中获取要加载的值。我有以下类: 在生产代码中,加载来自src/main/resources/application的值。yml。 单元测试等级: 我试图为每个应用程序添加一个测试配置文件。yml文件,看看添加ActiveProfiles(“test”)是否有效,但没有。 src/main/resources/application。yml公司 我还
我是springboot的新手,我正在尝试从application.properties文件的位置(src/main/resources)读取属性值。但它总是返回NULL。我也需要帮助。附加类和属性文件。请注意:我试过“https://www.baeldung.com/properties-with-spring”如何访问Spring Boot中application.properties文件中定