我的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 configs端点/ controller / config
调用此端点时,期望返回
{
"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中的对象。如何实现对各个数据类型的正确绑定?
感谢您的帮助!
答案 0 :(得分:0)
有更复杂的解决方案可用。除了将所有配置注入Map
之外,您还可以使用一个简单的Java DTO来表示配置的结构。
已使用@ConfigurationProperties
将配置注入Java DTO,并从控制器端点返回JavaDTO。
Spring Boot执行器端点还具有一个称为configprops
的特定端点,该端点提供了所有配置属性。
但是,如果要使用它,则可能需要进行很多自定义。
有关更多信息,https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html