Maison > Java > javaDidacticiel > Comment SpringBoot intègre le framework de cartographie Dozer

Comment SpringBoot intègre le framework de cartographie Dozer

WBOY
Libérer: 2023-05-11 21:58:04
avant
860 Les gens l'ont consulté

1. Introduction à Dozer

Dozer est un mappeur Java Bean vers Java Bean qui copie de manière récursive les données d'un objet à un autre. Dozer est un outil utilisé pour convertir des attributs entre deux objets. Avec cet outil, lorsque nous transférons toutes les valeurs d'attribut d'un objet vers un autre objet, nous n'avons plus besoin d'écrire des appels répétés aux méthodes set et get.

Plus important encore, Dozer garantit que les objets de domaine internes de la base de données ne fuient pas dans les couches de présentation externes ou les consommateurs externes, et il peut également mapper les objets de domaine aux appels d'API externes et vice versa.

2. Pourquoi utiliser le framework de cartographie Dozer

Le framework de cartographie joue un grand rôle dans l'architecture en couches Nous pouvons encapsuler les modifications apportées à des objets de données spécifiques et propager ces objets à d'autres. couches (c'est-à-dire objets de données de service externes, objets de domaine, objets de transfert de données, objets de données de service internes) pour créer des couches d'abstraction. Le cadre de mappage est idéal pour une utilisation dans les classes de type Mapper qui sont responsables du mappage des données d'un objet de données à un autre.

Pour l'architecture de système distribué, un effet secondaire est le transfert d'objets de domaine entre différents systèmes. Eh bien, nous ne voulons pas que les objets de domaine internes soient exposés à l'extérieur, et nous ne voulons pas non plus que des objets de domaine externes infiltrent notre système.

Le mappage entre les objets de données a traditionnellement été résolu avec des assembleurs (ou convertisseurs) d'objets de valeur codés à la main qui copient les données entre les objets. En tant que framework de cartographie open source puissant, polyvalent, flexible, réutilisable et configurable, Dozer permet aux développeurs d'économiser le temps et les coûts liés au développement d'un framework de mappage personnalisé.

3. Utilisation du framework de cartographie Dozer

Coordonnées maven de Dozer :

<dependency>
    <groupId>com.github.dozermapper</groupId>
    <artifactId>dozer-core</artifactId>
    <version>6.5.0</version>
</dependency>
Copier après la connexion

Afin de simplifier l'utilisation, Dozer fournit également un starter, dont le maven Les coordonnées sont :

<dependency>
    <groupId>com.github.dozermapper</groupId>
    <artifactId>dozer-spring-boot-starter</artifactId>
    <version>6.5.0</version>
</dependency>
Copier après la connexion

Commençons par utiliser le framework de cartographie dozer dans le projet springboot. La structure des répertoires du projet est la suivante :

Comment SpringBoot intègre le framework de cartographie Dozer

La première étape consiste à créer le projet maven dozer_demo et à configurer le fichier pom.xml #🎜 🎜#

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.hzz</groupId>
    <artifactId>dozer_demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/>
    </parent>
    <dependencies>
        <dependency>
            <groupId>com.github.dozermapper</groupId>
            <artifactId>dozer-spring-boot-starter</artifactId>
            <version>6.5.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>
Copier après la connexion
#🎜 🎜#La deuxième étape, créer UserDTO et UserEntity

UserDTO class

package com.hzz.dto;
import lombok.Data;
@Data
public class UserDTO {
    private String userId;
    private String userName;
    private int userAge;
    private String address;
    private String birthday;
}
Copier après la connexion

UserEntity class

package com.hzz.entity;
import lombok.Data;
import java.util.Date;
@Data
public class UserEntity {
    private String id;
    private String name;
    private int age;
    private String address;
    private Date birthday;
}
Copier après la connexion

La troisième étape, dans le répertoire resources/dozer/ Créer le fichier de configuration globale du bulldozer global.dozer.xml

<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="http://dozermapper.github.io/schema/bean-mapping"
          xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping
                              http://dozermapper.github.io/schema/bean-mapping.xsd">
    <!--全局配置:<date-format>表示日期格式-->
    <configuration>
        <date-format>yyyy-MM-dd</date-format>
    </configuration>
</mappings>
Copier après la connexion

La quatrième étape consiste à créer le fichier de cartographie du bulldozer biz.dozer.xml

<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="http://dozermapper.github.io/schema/bean-mapping"
          xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping
                             http://dozermapper.github.io/schema/bean-mapping.xsd">
    <!--描述两个类中属性的对应关系,对于两个类中同名的属性可以不映射-->
    <mapping date-format="yyyy-MM-dd">
        <class-a>com.hzz.entity.UserEntity</class-a>
        <class-b>com.hzz.dto.UserDTO</class-b>
        <field>
            <a>id</a>
            <b>userId</b>
        </field>
        <field>
            <a>name</a>
            <b>userName</b>
        </field>
        <field>
            <a>age</a>
            <b>userAge</b>
        </field>
    </mapping>
    <!--
    可以使用 map-id 指定映射的标识,在程序中通过此标识来确定使用当前这个映射关系
    -->
    <mapping date-format="yyyy-MM-dd" map-id="user">
        <class-a>com.hzz.entity.UserEntity</class-a>
        <class-b>com.hzz.dto.UserDTO</class-b>
        <field>
            <a>id</a>
            <b>userId</b>
        </field>
        <field>
            <a>name</a>
            <b>userName</b>
        </field>
        <field>
            <a>age</a>
            <b>userAge</b>
        </field>
    </mapping>
</mappings>
Copier après la connexion
#🎜🎜 dans les ressources /dozer/ répertoire #La cinquième étape, écrivez le fichier application.yml

dozer:

mappingFiles:
- classpath:dozer/global.dozer.xml# 🎜🎜# - classpath :dozer/biz.dozer.xml



La sixième étape consiste à créer la classe de démarrage principale DozerApp

package com.hzz;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DozerApp {
    public static void main(String[] args) {
        SpringApplication.run(DozerApp.class, args);
    }
}
Copier après la connexion

La septième étape consiste à écrire le test unitaire DozerTest
package com.hzz;
import com.github.dozermapper.core.Mapper;
import com.hzz.dto.UserDTO;
import com.hzz.entity.UserEntity;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DozerApp.class)
public class DozerTest {
    @Autowired
    private Mapper mapper;
    @Test
    public void testDozer() {
        UserDTO userDTO = new UserDTO();
        userDTO.setUserId("100");
        userDTO.setUserName("ls");
        userDTO.setUserAge(2);
        userDTO.setAddress("bj");
        userDTO.setBirthday("2020-07-04");
        UserEntity user = mapper.map(userDTO, UserEntity.class);
        System.out.println(user);
    }
    @Test
    public void testDozer2(){
        UserDTO userDTO = new UserDTO();
        userDTO.setUserId("100");
        userDTO.setUserName("ls");
        userDTO.setUserAge(5);
        userDTO.setAddress("bj");
        userDTO.setBirthday("2017-07-04");
        UserEntity user = new UserEntity();
        user.setId("200");
        System.out.println(user);
        mapper.map(userDTO, user);
        System.out.println(user); //被 userDTO 覆盖了
    }
    @Test
    public void testDozer3(){
        UserDTO userDTO = new UserDTO();
        userDTO.setUserId("100");
        userDTO.setUserName("zs");
        userDTO.setUserAge(3);
        userDTO.setAddress("bj");
        UserEntity user = new UserEntity();
        System.out.println(user);
        mapper.map(userDTO,user,"user"); //指定映射ID为user
        System.out.println(user);
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal