使用spring-boot,我试图使用注释@ConfigurationProperties("oauth2.discovery"(.加载配置
除了嵌套映射的键没有与配置文件内容一起加载,而是以它们各自的索引为前缀之外,一切都很好。
这是用于加载配置的代码:
@ConfigurationProperties("oauth2.discovery")
public class DiscoveryConfigs {
private Map<String, DiscoveryConfigs.DiscoveryConfig> config;
public Map<String, DiscoveryConfigs.DiscoveryConfig> getConfig() {
return this.config;
}
public void setConfig(Map<String, DiscoveryConfigs.DiscoveryConfig> discovery) {
this.config = discovery;
}
public static class DiscoveryConfig {
private String name;
private Map<String, String> endpoints;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Map<String, String> getEndpoints() {
return endpoints;
}
public void setEndpoints(Map<String, String> endpoints) {
this.endpoints = endpoints;
}
}
}
这是我的应用程序。yml
oauth2:
discovery:
config:
affiliation:
name: affiliation-service
endpoints:
- public: /getPublic
- forRoleA: /getForRoleA
- forRoleB: /getForRoleB
blabla:
name: ...
使用DiscoveryConfigs加载应用程序。yml我得到了以下内容:
(IntellIj中的调试器视图(
端点={LinkedHashMap@10957}大小>=3
"0.public"->quot/getPublic">
"1.对于RoleA"->quot/getForRoleA">
"2.对于RoleB"->quot/getForRoleB";
其中键是例如"0.public">而不是"strong>";"公共">
所以我肯定我错过了什么,但我不知道是什么。。。
在spring.io上检查绑定映射的描述
oauth2:
discovery:
config:
affiliation:
name: affiliation-service
endpoints:
public: /getPublic
forRoleA: /getForRoleA
forRoleB: /getForRoleB