Prev Next

Java / MapStruct Java Interview questions part 2

What is the difference between qualifiedByName and qualifiedBy?

Both attributes disambiguate which custom method MapStruct should call when more than one candidate method matches the same source/target type pair - they differ in how the target method is identified.

qualifiedByNamequalifiedBy
References a method by the string given in its @Named("...") annotation.References a method by a custom annotation type used as a marker.
Simple, one string per method - easy for small numbers of overloads.Type-safe (refactor-friendly), scales better with many qualifiers.
@Mapping(qualifiedByName = "trim")@Mapping(qualifiedBy = Trim.class)

Both approaches solve the exact same ambiguity problem; teams generally pick qualifiedByName for a handful of helper methods and move to custom qualifiedBy annotations once a mapper accumulates many overlapping conversion methods. A custom annotation also documents intent directly in the method signature, which can make a large mapper easier to navigate than a list of string labels scattered across @Named declarations.

qualifiedByName identifies a target method using:
A benefit of qualifiedBy over qualifiedByName is:

More Related questions...

What is MapStruct? What are the main features of MapStruct? What is the purpose of the @Mapper annotation? What are the types of mapping methods MapStruct can generate? How do you add MapStruct to a Maven project? How do you add MapStruct to a Gradle project? Define a MapStruct mapper interface? Describe how MapStruct generates the mapper implementation class? List the annotations commonly used with MapStruct? What is the purpose of the @Mapping annotation? How do you map fields with different names using MapStruct? How do you ignore a target field during mapping? What is the componentModel attribute in @Mapper? How do you use MapStruct with Spring Boot? What are default methods in a MapStruct mapper used for? How do you map a List of objects with MapStruct? What is the purpose of the uses attribute in @Mapper? How do you retrieve a mapper instance without Spring? What is the difference between MapStruct and ModelMapper? What is the difference between MapStruct and Dozer? Why is MapStruct faster than reflection-based mapping libraries? How does MapStruct handle nested object mapping? How does MapStruct map a Map to another Map type? How do you perform custom type conversion in MapStruct? Explain the internal working of MapStruct's annotation processing? Explain the execution flow of a generated MapStruct mapper method? How do you use @BeforeMapping and @AfterMapping? When should you use an expression inside @Mapping? How does MapStruct handle null values during mapping? What is the difference between NullValueMappingStrategy options? How do you inject dependencies into a MapStruct mapper? When would you choose an abstract class over an interface for a mapper? What happens when MapStruct can't find a matching source property? How do you use @InheritInverseConfiguration for bidirectional mapping? How do you use @InheritConfiguration to reuse mapping rules? Why doesn't MapStruct use reflection at runtime? How do you troubleshoot an "Unmapped target property" warning? What is the difference between @Mapper(uses =...) and a default method? How can you optimize MapStruct-generated mapping performance? Explain the lifecycle of a MapStruct mapper from source code to runtime call? How does MapStruct integrate with Lombok, and what issues can occur? What is the difference between returning a new object and using @MappingTarget? When should you use the @MappingTarget parameter? How do you map an enum to a different enum with mismatched constants? What is the difference between qualifiedByName and qualifiedBy? How does MapStruct handle circular references between objects? Why should you use MapStruct instead of hand-written DTO mapping code? How do you unit test a MapStruct-generated mapper? What is the difference between MapStruct's compile-time approach and CGLIB proxy-based mapping? How do you handle multiple mapping methods for the same source and target types?
Show more question and Answers...


Comments & Discussions