Je DTO et modèles DOMAIN:La meilleure façon de cartographie DTO/domaine pour le transport entre microservices
@Data
public class CarDomain {
private String name;
private int year;
private String color;
}
et
@Data
public class CarDto {
private String name;
private int year;
private String color;
}
J'ai 3 microservices (MS) communiquent entre eux par rabbitmq. J'ai models module
avec toutes les classes DTO. Chaque MS comprend models module
dans maven.
1 MS envoyer carDto 2 MS reçoit CarDto et le convertit en domaine. Pour cela, je peux utiliser plusieurs variantes:
- bibliothèque utilisation par exemple
mapstruct
:
@Mapper public interface CarMapper { CarMapper INSTANCE = Mappers.getMapper(CarMapper.class); CarDto carToCarDto(CarDomain car); }
et utilisation:
CarDto carDto = CarMapper.INSTANCE.carToCarDto(carDomain);
- Créer mapper manuel:
class CarMapper { public static CarDto toDto(CarDomain car) { CarDto carDto = new CarDto(); carDto.setName(car.getName()); carDto.setYear(car.getYear()); carDto.setColor(car.getColor()); } }
Maintenant, nous utilisons deux variantes. Nous sommes quand nous construisons microservice et dans models module
un certain champ de changement de modèle DTO nous obtenons une erreur sur le temps de compilation. Par exemple le nom de quelqu'un changer ce modèle dpour dans models module
private String name;
à
private String name1;
Quand nous construisons projet, nous obtenons une erreur sur cette ligne:
carDto.setName(car.getName());// getName not found becose now getName1
Mais cette dure. Pour chaque modèle dto/domaine, nous devons créer un mappeur et écrire chaque champ. Dans 1 variantes c'est plus facile mais si vous changez, nous obtenons une erreur à l'exécution. Dites-moi la meilleure approche pour faire correspondre/cartographier les modèles dto/domaine?
Si vous ne l'avez pas déjà fait, consultez cette vidéo: https://www.youtube.com/watch?v=yPvef9R3k-M –