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



所以我有一些类。 例如:

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 或运算符名称从外部服务中带有 null,此 restTemplate 也会创建运算符对象并将此字段设置为 null。如何防止此行为。对我来说,理想的行为是异常,不要启动应用程序。

我认为这是因为底层 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;
}
}

相关内容

  • 没有找到相关文章

最新更新