Accéder au contenu principal

Articles

Affichage des articles du 2020

Architecture hexagonale

Introduction Dans une application conventionnel, il ne sera pas rare d'avoir une couche de contrôleur,  de service et de dao. Pour chacune de nos entités, une classe existera sous chacune de ces couches. Il est possible de se retrouver rapidement avec des centaines de classes. Ce type d'architecture utilise un modèle d'objet anémique, c'est-à-dire qu'il ne contient pas de logique métier. Il n'est pas rare de voir un appel à la couche de persistance directement de la première couche. Les entités, les domains object n'ont pas de règle métier. Elle est alors mise dans les classes de service, utilitaire. Ces classes chargent des entités, modifient leurs états et persistent le tout. Les services commencent à utiliser d'autres services et il n'est pas rare de se retrouver avec des classes de plusieurs milliers de lignes. Pour une petite application, de type CRUD, ça peut être plus rapide à développer, mais imaginer maintenant une application avec 200K, 300...

Comment mapper des objets avec MapStruct

Il n'est pas rare dans une application de devoir copier les valeurs d'un type d'objet à un autre. Par exemple les objets de la couche métier à ceux de la présentation. Une multitude de librairie existe en Java pour effectuer cette opération. Dans cet article nous utiliserons un des plus rapides soit MapStruct. Une comparaison est disponible à cette url . Mappage avec les mêmes noms de champs public class Person{     private String name;     private String lastname;     private int age; } public class PersonDto{     private String name;     private String lastname; } Il suffit de créer une interface @Mapper public interface PersonMapper {     PersonDto personToPersonDTO(Person entity);     Person epersonDTOtoPerson(PersonDto dto); } MapStruct générera une classe d'implémentation. Ne surtout pas hésiter à la regarder pour voir le code généré pour éviter des surprises. Mappag...

Générer un rapport grâce à Thymeleaf et Open HTML to PDF

Une multitude de produit existe pour générer des rapports dans différents formats. Jaspert Report, iText. Certain sont plus bas niveau tel que PDFbox. Le moteur de template Thymeleaf permet de générer des pages web. Ensuite il est possible d'utiliser une librarie tierce tel que Open Html To pdf pour générer un pdf. C'est la manière la plus simple et rapide que j'ai trouvé pour générer un pdf. Spring boot sera utilisé, par défaut lorsqu'il est utilisé avec Thymeleaf, une configuration est généré afin de pouvoir généré des pages web. Une autre configuration doit être créé pour être indépendant de celle-ci. @Component public class PdfGeneratorUtil<T> {     @Autowired     private TemplateEngine templateEngine;     public byte[] process(String templateName, String templateExtension, List<T> listT, String contextVariableName) throws Exception {         Context ctx = new Context(); ...