gpt4 book ai didi

java - Spring @ConfigurationProperties 多个属性返回空

转载 作者:行者123 更新时间:2023-11-29 04:23:19 26 4
gpt4 key购买 nike

application.properties 文件包含具有子属性的属性:

status.available=00, STATUS.ALLOWED
status.forbidden=01, STATUS.FORBIDDEN
status.authdenied=05, STATUS.AUTH_DENIED

我们的想法是像这样将这些属性添加到应用程序中:

@Configuration
@ConfigurationProperties(prefix = "status")
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE)
public class StatusProperties {

private Map <String, List <String>> statusMapping;

public Map <String, List <String>> getStatusMapping () {
return statusMapping;
}

public void setStatusMapping (Map <String, List <String>> statusMapping) {
this.statusMapping = statusMapping;
}
}

问题是这个 Map 返回的是空的。我一定做错了什么。也许在 Spring 中甚至不可能这样做?

最佳答案

我不确定您对数据类型及其分配的选择。我建议您重新考虑这个设计。


对于您的主要问题:

Spring 不知道,status.* 应该映射到 private Map <String, List <String>> statusMapping; .另外,由于您的类(class)名为 *properties,您似乎不希望它成为 @Configuration。类(class)。考虑以下模式:

首先,创建一个属性类来保存属性:

@ConfigurationProperties(prefix = "status")
public class StatusProperties {

private Map.Entry<Integer, String> available;
private Map.Entry<Integer, String> forbidden;
private Map.Entry<Integer, String> authdenied;

public Map.Entry<Integer, String> getAvailable() {
return available;
}

public void setAvailable(Map.Entry<Integer, String> available) {
this.available = available;
}

public Map.Entry<Integer, String> getForbidden() {
return forbidden;
}

public void setForbidden(Map.Entry<Integer, String> forbidden) {
this.forbidden = forbidden;
}

public Map.Entry<Integer, String> getAuthdenied() {
return authdenied;
}

public void setAuthdenied(Map.Entry<Integer, String> authdenied) {
this.authdenied = authdenied;
}
}

现在,您的 IDE 应该能够在编辑 application.properties 时从 setter 读取文档并检查有效性。 Spring 可以 Autowiring 字段并自动为您创建正确的数据类型。

考虑将条目映射到 map (或者,正如我已经说过的,更改设计)

现在,您可以在您的配置中使用这个属性类:

@Configuration
@EnableConfigurationProperties(StatusProperties.class)
public class StatusConfiguration {
@Bean
public MyBean myBean(StatusProperties properties) {
return new MyBean(properties);
}
}

关于java - Spring @ConfigurationProperties 多个属性返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47789274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com