# MapStruct Tutorial

## ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-75c36ca21977a39ec156e2fd48b1f548a884d41e%2Ficons8-code-64.png?alt=media) *Description*

MapStruct is a complete Java Bean Mapper framework. Based on Annotation Processor (APT) mechanism to generate mappers for the individual Java beans mappings. The generated mappers are real Java-based classes that can also be debugged in the runtime. The MapStruct processor itself uses an interface/abstract class as a starting point of mappings creation (can also contain individually-matched property mapping implementations).

## ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-a0994bcfb3a7b71ff67a84aa3640ca5f78d90c84%2Ficons8-attach-64.png?alt=media) *Features*

## ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-4ed9f52d5ebe2dc58fe32d791ec564b3c13cd10e%2Ficons8-edit-property-64.png?alt=media) *Pros & Cons*

### ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-12af9e13b9af93bf6e34ac672aa5e21cea299227%2Ficons8-add-property-64.png?alt=media) *Pros*

* annotation-based mappings processing mechanism
* wide range of available mapping operations (with more complexity apart from Orika/Dozer)
* can be debugged in runtime in order to validate the end-to-end object mappings

### ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-22350a29bb796d244a393627a10bf8e746546cb7%2Ficons8-remove-property-64.png?alt=media) *Cons*

* additional interfaces/abstract classes needed to handle the mapping mechanism
* high performance and universal applicability

## ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-8b63536610432d3df79534955d64748ed7184f95%2Ficons8-source-64.png?alt=media) *Use cases*

## ![image info](https://2253721247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MN-Mk4OMwmmbOMJa9JS%2Fuploads%2Fgit-blob-b7fff22a5f9ca9c6eb4c54dc1209a9589ba85ef6%2Ficons8-inspect-code-64.png?alt=media) *Links*

* [**Official Site**](https://mapstruct.org/)
* [**Official Repository**](https://github.com/mapstruct/mapstruct)
* [**Java Performance Mappings**](https://www.baeldung.com/java-performance-mapping-frameworks)
* [**Java MapStruct Guide**](https://www.baeldung.com/mapstruct)
* [**Java MapStruct Article**](https://www.codeflow.site/ru/article/mapstruct)
* [**Java MapStruct FAQ**](https://progi.pro/mapstruct-t16374)
* [**Java MapStruct Advanced**](https://stackabuse.com/guide-to-mapstruct-in-java-advanced-mapping-library/)
* [**Java MapStruct Alternatives**](https://java.libhunt.com/mapstruct-alternatives)
