Spring RestTemplate(とか)は、null を Value Object に対してどうマッピングするか確認
@RestController
public class TestController {
@RequiredArgsConstructor
public static class Vo {
private final String value;
@JsonValue
public String getValue() {
return value;
}
}
@ToString
public static class Entity {
public Vo vo;
}
@GetMapping(value = "/test", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> test() {
return ResponseEntity.ok("""
{"vo": null}
""");
}
public static void main(String[] args) {
var a = new RestTemplate()
.getForObject("http://localhost:8080/test", Entity.class);
System.out.println(a.vo); // null
}
}
中身が null の Value Object ではなく、オブジェクト自体が null になる。
つまり、getValue()
する時は、null チェックをしないとダメ。
#値オブジェクト