MapStruct คือตัวประมวลผลคำอธิบายประกอบ Java ที่ออกแบบมาเพื่อสร้างตัวแมปที่ปลอดภัยต่อประเภทและประสิทธิภาพสูงสำหรับคลาส Java bean รวมถึงการสนับสนุนบันทึก Java 16+ ด้วยการสร้างการแมปโดยอัตโนมัติ MapStruct ไม่จำเป็นต้องเขียนโค้ดด้วยตนเองที่น่าเบื่อและเสี่ยงต่อข้อผิดพลาด เครื่องกำเนิดไฟฟ้าให้ค่าเริ่มต้นที่สมเหตุสมผลและการแปลงประเภทในตัว ช่วยให้สามารถจัดการการแมปมาตรฐานได้อย่างง่ายดาย ขณะเดียวกันก็ให้ความยืดหยุ่นสำหรับการกำหนดค่าแบบกำหนดเองหรือพฤติกรรมการแมปแบบพิเศษ ด้วยการผสานรวมเข้ากับโปรเจ็กต์ Java สมัยใหม่ได้อย่างราบรื่น MapStruct สามารถแมประหว่าง bean ทั่วไป บันทึก และแม้แต่ลำดับชั้นที่ซับซ้อน ทำให้เป็นเครื่องมือที่ปรับเปลี่ยนได้สำหรับแอปพลิเคชัน Java ที่หลากหลาย
เมื่อเปรียบเทียบกับเฟรมเวิร์กการทำแผนที่ที่ทำงานขณะรันไทม์ MapStruct มีข้อดีดังต่อไปนี้:
หากต้องการสร้างการแมประหว่างสองประเภท ให้ประกาศอินเทอร์เฟซผู้ทำแผนที่ดังนี้:
@ Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers . getMapper ( CarMapper . class );
@ Mapping ( target = "seatCount" , source = "numberOfSeats" )
CarDto carToCarDto ( Car car );
}
ณ เวลาคอมไพล์ MapStruct จะสร้างการใช้งานอินเทอร์เฟซนี้ การใช้งานที่สร้างขึ้นใช้การเรียกใช้เมธอด Java ธรรมดาสำหรับการแมประหว่างออบเจ็กต์ต้นทางและเป้าหมาย กล่าวคือ ไม่เกี่ยวข้องกับการสะท้อนกลับ ตามค่าเริ่มต้น คุณสมบัติจะถูกแมปหากมีชื่อเดียวกันในแหล่งที่มาและเป้าหมาย แต่คุณสามารถควบคุมสิ่งนี้และแง่มุมอื่นๆ ได้โดยใช้ @Mapping
และคำอธิบายประกอบอื่นๆ อีกจำนวนหนึ่ง
MapStruct ต้องใช้ Java 1.8 หรือใหม่กว่า
MapStruct ทำงานในการสร้างบรรทัดคำสั่ง (javac ธรรมดา ผ่าน Maven, Gradle, Ant ฯลฯ) และ IDE
สำหรับ Eclipse ปลั๊กอินเฉพาะอยู่ในการพัฒนา (ดู https://github.com/mapstruct/mapstruct-eclipse) เป็นมากกว่าสิ่งที่เป็นไปได้ด้วยตัวประมวลผลคำอธิบายประกอบ โดยให้ความช่วยเหลือด้านเนื้อหาสำหรับคุณลักษณะคำอธิบายประกอบ การแก้ไขด่วน และอื่นๆ อีกมากมาย
สำหรับ IntelliJ ปลั๊กอินนั้นมีอยู่ในตลาด IntelliJ (ดู https://plugins.jetbrains.com/plugin/10036-mapstruct-support)
สำหรับโปรเจ็กต์ที่ใช้ Maven ให้เพิ่มสิ่งต่อไปนี้ลงในไฟล์ POM ของคุณเพื่อใช้ MapStruct (การขึ้นต่อกันมีให้ที่ Maven Central):
...
< properties >
< org .mapstruct.version>1.6.3</ org .mapstruct.version>
</ properties >
...
< dependencies >
< dependency >
< groupId >org.mapstruct</ groupId >
< artifactId >mapstruct</ artifactId >
< version >${org.mapstruct.version}</ version >
</ dependency >
</ dependencies >
...
< build >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-compiler-plugin</ artifactId >
< version >3.13.0</ version >
< configuration >
< source >17</ source >
< target >17</ target >
< annotationProcessorPaths >
< path >
< groupId >org.mapstruct</ groupId >
< artifactId >mapstruct-processor</ artifactId >
< version >${org.mapstruct.version}</ version >
</ path >
</ annotationProcessorPaths >
</ configuration >
</ plugin >
</ plugins >
</ build >
...
สำหรับ Gradle คุณต้องมีสิ่งต่อไปนี้:
plugins {
.. .
id " com.diffplug.eclipse.apt " version " 3.26.0 " // Only for Eclipse
}
dependencies {
.. .
implementation ' org.mapstruct:mapstruct:1.6.3 '
annotationProcessor ' org.mapstruct:mapstruct-processor:1.6.3 '
testAnnotationProcessor ' org.mapstruct:mapstruct-processor:1.6.3 ' // if you are using mapstruct in test code
}
.. .
หากคุณไม่ได้ทำงานกับเครื่องมือการจัดการการขึ้นต่อกัน คุณสามารถรับชุดการแจกจ่ายได้จากหน้าการเผยแพร่
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ MapStruct โปรดดูที่หน้าแรกของโครงการ เอกสารอ้างอิงครอบคลุมฟังก์ชันการทำงานที่ให้มาทั้งหมดโดยละเอียด หากคุณต้องการความช่วยเหลือโปรดถามในการสนทนา
MapStruct ใช้ Maven ในการสร้าง ต้องใช้ Java 11 สำหรับการสร้าง MapStruct จากแหล่งที่มา หากต้องการสร้างโปรเจ็กต์ที่สมบูรณ์ ให้รัน
./mvnw clean install
จากรากของไดเรกทอรีโครงการ หากต้องการข้ามโมดูลการแจกจ่าย ให้รัน
./mvnw clean install -DskipDistribution=true
MapStruct ใช้ตัวประมวลผลคำอธิบายประกอบอัญมณีเพื่อสร้างการแมปอัญมณีสำหรับคำอธิบายประกอบของตัวเอง ดังนั้น เพื่อให้สามารถผสานรวมภายในการประมวลผลคำอธิบายประกอบ IDE ได้อย่างราบรื่น
ตรวจสอบให้แน่ใจว่าคุณมี IntelliJ 2018.2.x เป็นอย่างน้อย (จำเป็นเนื่องจากการรองรับ annotationProcessors
จาก maven-compiler-plugin
มาจากเวอร์ชันนั้น) เปิดใช้งานการประมวลผลคำอธิบายประกอบใน IntelliJ (บิลด์ การดำเนินการ การปรับใช้ -> คอมไพเลอร์ -> ตัวประมวลผลคำอธิบายประกอบ)
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งปลั๊กอิน m2e_apt แล้ว
MapStruct ได้รับอนุญาตภายใต้ Apache License เวอร์ชัน 2.0 ("ใบอนุญาต"); คุณไม่สามารถใช้โครงการนี้ได้เว้นแต่จะเป็นไปตามใบอนุญาต คุณสามารถขอรับสำเนาใบอนุญาตได้ที่ https://www.apache.org/licenses/LICENSE-2.0