Cześć!
Nie wiedziałem gdzie umieścić takie mapowanie, bo potrzebuję dla kilku encji, więc wykombinowałem coś takiego:
public interface Mapper<E, D> {
E toEntity(D dto);
D toDto(E entity);
}
Przykładowa implementacja:
@Component
public class UserMapper implements Mapper<User, UserDTO> {
private final PasswordEncoder passwordEncoder;
@Autowired
public UserMapper(PasswordEncoder passwordEncoder) {
this.passwordEncoder = passwordEncoder;
}
@Override
public User toEntity(UserDTO dto) {
User user = new User();
user.setName(dto.getName());
...
return user;
}
@Override
public UserDTO toDto(User entity) {
UserDTO userDto = new UserDTO();
userDto.setUserId(entity.getId());
...
return userDto;
}
I serwis, DI przez konstruktor.
private final Mapper<User, UserDTO> userMapper;
Niby działa, ale czy taka praktyka jest w porządku? Wybaczcie za głupie pytanie, uczę się :)