Автоматическое сопоставление DTO с Entity в Spring Boot API с помощью MapStruct - PullRequest
0 голосов
/ 05 октября 2018

Я ищу способ сократить код моего контроллера.

Например, мой текущий контроллер выглядит так:

@PostMapping
public ResponseEntity<UserDTO> create(@RequestBody @Valid UserDTO userDTO) {
    val user = userMapper.userDTOToUser(userDTO);
    val createdUser = userService.create(user);
    val responseDTO = userMapper.userToUserDTO(createdUser);
    return new ResponseEntity<>(responseDTO, HttpStatus.CREATED);
}

и, конечно, его можно сократить до:

@PostMapping
public ResponseEntity<UserDTO> create(@RequestBody @Valid UserDTO userDTO) {
    val createdUser = userService.create(userMapper.userDTOToUser(userDTO));
    return new ResponseEntity<>(userMapper.userToUserDTO(createdUser), HttpStatus.CREATED);
}

но за счет читабельности.

Поэтому я нашел несколько учебных пособий с хорошим и аккуратным подходом, таких как:
auth0.com / blog
breakpoint.digital

, но оба (и любой другой, которого я смог найти) используют ModelMapper.
Есть ли способ достичь аналогичного результата с MapStruct?
Расширение RequestResponseBodyMethodProcessor кажется правильным, но не смог найти никакой информации об этом.

Исходя из приведенных выше руководств, я хотел бы получить что-то вроде:

@PostMapping
@OutputDTO(UserDTO.class)
public ResponseEntity<User> create(@RequestBody @Valid @InputDTO(UserDTO.class) User user) {
    return new ResponseEntity<>(userService.create(user), HttpStatus.CREATED);
}
...