Heim  >  Artikel  >  Java  >  Wie SpringBoot das Dozer-Mapping-Framework integriert

Wie SpringBoot das Dozer-Mapping-Framework integriert

WBOY
WBOYnach vorne
2023-05-11 21:58:04783Durchsuche

1. Einführung in Dozer

Dozer ist ein Java-Bean-zu-Java-Bean-Mapper, der Daten rekursiv von einem Objekt auf ein anderes kopiert. Dozer ist ein Tool zum Konvertieren von Attributen zwischen zwei Objekten. Wenn wir mit diesem Tool alle Attributwerte eines Objekts auf ein anderes Objekt übertragen, müssen wir keine wiederholten Aufrufe an die Set- und Get-Methoden schreiben.

Am wichtigsten ist, dass Dozer sicherstellt, dass interne Domänenobjekte aus der Datenbank nicht in externe Präsentationsebenen oder externe Verbraucher gelangen, und dass Dozer auch Domänenobjekte externen API-Aufrufen zuordnen kann und umgekehrt.

2. Warum das Mapping-Framework Dozer verwenden?

Das Mapping-Framework spielt eine große Rolle in der Schichtarchitektur. Wir können Änderungen an bestimmten Datenobjekten kapseln und diese Objekte an andere weitergeben Schichten (d. h. externe Dienstdatenobjekte, Domänenobjekte, Datenübertragungsobjekte, interne Dienstdatenobjekte), um Abstraktionsschichten zu erstellen. Das Mapping-Framework eignet sich ideal für die Verwendung in Mapper-Typklassen, die für die Zuordnung von Daten von einem Datenobjekt zu einem anderen verantwortlich sind.

Bei verteilter Systemarchitektur ist ein Nebeneffekt die Übertragung von Domänenobjekten zwischen verschiedenen Systemen. Nun, wir möchten nicht, dass interne Domänenobjekte nach außen sichtbar sind, und wir möchten auch nicht, dass externe Domänenobjekte unser System infiltrieren.

Die Zuordnung zwischen Datenobjekten wurde traditionell mit handcodierten Wertobjekt-Assemblern (oder Konvertern) gelöst, die Daten zwischen Objekten kopieren. Als leistungsstarkes, vielseitiges, flexibles, wiederverwendbares und konfigurierbares Open-Source-Mapping-Framework spart Dozer Entwicklern Zeit und Kosten für die Entwicklung eines benutzerdefinierten Mapper-Frameworks.

3. Verwendung des Dozer-Mapping-Frameworks

Dozers Maven-Koordinaten:

<dependency>
    <groupId>com.github.dozermapper</groupId>
    <artifactId>dozer-core</artifactId>
    <version>6.5.0</version>
</dependency>

Um die Nutzung zu vereinfachen, stellt Dozer auch einen Starter bereit, dessen Maven Die Koordinaten sind:

<dependency>
    <groupId>com.github.dozermapper</groupId>
    <artifactId>dozer-spring-boot-starter</artifactId>
    <version>6.5.0</version>
</dependency>

Beginnen wir mit der Verwendung des Dozer-Mapping-Frameworks im Springboot-Projekt. Die Verzeichnisstruktur des Projekts ist wie folgt:

Wie SpringBoot das Dozer-Mapping-Framework integriert

Der erste Schritt besteht darin, das Maven-Projekt dozer_demo zu erstellen und die pom.xml-Datei #🎜 zu konfigurieren 🎜#

<?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>
#🎜 🎜#Der zweite Schritt: Erstellen Sie UserDTO und UserEntity das Verzeichnis resources/dozer/. Erstellen Sie die globale Konfigurationsdatei von dozer global.dozer.xml

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;
}

Der vierte Schritt besteht darin, die Zuordnungsdatei biz.dozer.xml

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;
}
#🎜🎜 von dozer in den Ressourcen zu erstellen /dozer/-Verzeichnis #Fünfter Schritt: Schreiben Sie die application.yml-Datei

dozer:

Zuordnungsdateien:

- Klassenpfad:dozer/global.dozer.xml# 🎜🎜# - Klassenpfad :dozer/biz.dozer.xml

Der sechste Schritt besteht darin, die Hauptstartup-Klasse DozerApp zu erstellen

<?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>

Der siebte Schritt besteht darin Schreiben Sie den Unit-Test DozerTest
<?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>

Das obige ist der detaillierte Inhalt vonWie SpringBoot das Dozer-Mapping-Framework integriert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen