Существует два распространенных подхода к такой проблеме.
- Используйте @ JsonIgnore для полей / геттеров, которые вы хотите исключить. Однако это может привести к адской аннотации или, как правило, к затруднительному чтению кода.
@JsonIgnore
private String password;
Создать класс DTO, из которого данные будут десериализованы или сериализованы. Я имею в виду, что когда какой-либо пользователь делает запрос POST с определением
car
, он будет десериализован весной до
CarDto
, а затем проанализирован вами в слое обслуживания до объекта
Car
, который вы можете сохранить вбаза данных. Аналогично, объект
Car
будет проанализирован на
CarDto
, если пользователь запросит данные.
@GetMapping("/{userId}")
UserDto getUser(@PathVariable Long userId) {
return userService.getUser(userId);
}
@PostMapping
UserDto addUser(@RequestBody UserDto userDto) {
return userService.createUser(userDto);
}
Этот, с другой стороны, может привести к ситуации, когда вы иногда используетеа иногда и сам класс. Из-за этого рассмотрите синтаксический анализ в / из CarDto
только на уровне контроллера (в отличие от приведенного выше примера)
Также хорошо избегать создания двух классов в одном файле. Это затрудняет поиск желаемого класса впоследствии.