gpt4 book ai didi

java - RestTemplate.exchange 创建实例,即使变量注释为 @NotNull

转载 作者:行者123 更新时间:2023-12-02 00:43:12 24 4
gpt4 key购买 nike

所以我有一些课。例如:

public class Operator {

@NotNull
private Integer id;

@NotNull
private String operatorName;
}

我想从另一个微服务中使用 RestTemplate 获取该对象的映射

@Bean
public Map<String, Operator> operatorsMap(RestTemplate restTemplate, UriFactory uriFactory) {

Map<String, Operator> map = Objects.requireNonNull(restTemplate.exchange(uriFactory.getOperatorsURI(),
HttpMethod.GET,
null,
new ParameterizedTypeReference<Map<String, Operator>>() {
}).getBody());
LOG.info("Successfully loaded data for {} operators", map.size());
return Collections.unmodifiableMap(map);
}

问题是 - 即使 id 或operatorName 带有来自 externalService 的 null,此 restTemplate 也会创建操作符对象并将该字段设置为 null。我怎样才能防止这种行为。对我来说理想的行为是异常(exception)并且不要启动应用程序。

最佳答案

我认为这是因为在反序列化期间需要强制执行底层 json 对象映射器。

public class Operator {

@JsonProperty(required = true)
@Required
@NotNull
private Integer id;

@JsonProperty(required = true)
@Required
@NotNull
private String operatorName;

Operator(@NotNull id, @NotNull operatorName) {
this.id = id;
this.operatorName = operatorName;
}

}

关于java - RestTemplate.exchange 创建实例,即使变量注释为 @NotNull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57919662/

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