0
0
Spring Bootframework~20 mins

MapStruct for automatic mapping in Spring Boot - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
MapStruct Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this MapStruct mapping?
Given the following MapStruct mapper interface and classes, what will be the value of target.name after mapping?
Spring Boot
public class Source {
    private String name;
    public Source(String name) { this.name = name; }
    public String getName() { return name; }
}

public class Target {
    private String name;
    public void setName(String name) { this.name = name; }
    public String getName() { return name; }
}

@Mapper
public interface MyMapper {
    MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);
    Target sourceToTarget(Source source);
}

// Usage:
Source source = new Source("Alice");
Target target = MyMapper.INSTANCE.sourceToTarget(source);
String result = target.getName();
A"Alice"
Bnull
CCompilation error
D"source.name"
Attempts:
2 left
💡 Hint
MapStruct automatically maps properties with the same name and compatible types.
📝 Syntax
intermediate
1:30remaining
Which MapStruct annotation is required to define a mapper interface?
You want to create a MapStruct mapper interface to convert between two classes. Which annotation must you use on the interface?
A@Mapper
B@Component
C@Service
D@Repository
Attempts:
2 left
💡 Hint
MapStruct uses a special annotation to generate mapper implementations.
🔧 Debug
advanced
2:30remaining
Why does this MapStruct mapping fail to compile?
Consider this mapper interface: @Mapper public interface UserMapper { UserDto toDto(User user); } User and UserDto have fields with different names: User has 'firstName', UserDto has 'givenName'. No additional configuration is provided. Why does MapStruct fail to generate the implementation?
AMapStruct requires all fields to be public for mapping.
BMapStruct only supports mapping between classes with identical field types.
CMapStruct cannot map fields with different names without explicit @Mapping annotations.
DMapStruct needs a default constructor in the mapper interface.
Attempts:
2 left
💡 Hint
MapStruct matches fields by name by default.
state_output
advanced
2:00remaining
What is the output of this MapStruct mapping with nested objects?
Given these classes: public class Address { private String city; public Address(String city) { this.city = city; } public String getCity() { return city; } } public class User { private String name; private Address address; public User(String name, Address address) { this.name = name; this.address = address; } public String getName() { return name; } public Address getAddress() { return address; } } public class UserDto { private String name; private String city; public void setName(String name) { this.name = name; } public void setCity(String city) { this.city = city; } public String getName() { return name; } public String getCity() { return city; } } @Mapper public interface UserMapper { UserMapper INSTANCE = Mappers.getMapper(UserMapper.class); @Mapping(source = "address.city", target = "city") UserDto userToUserDto(User user); } // Usage: User user = new User("Bob", new Address("Paris")); UserDto dto = UserMapper.INSTANCE.userToUserDto(user); String output = dto.getCity();
ACompilation error
Bnull
C"address.city"
D"Paris"
Attempts:
2 left
💡 Hint
MapStruct supports nested property mapping with dot notation.
🧠 Conceptual
expert
3:00remaining
Which statement about MapStruct's generated mapper implementations is true?
Choose the correct statement about how MapStruct generates mapper implementations in a Spring Boot project.
AMapStruct requires manual implementation of all mapping methods despite the interface definition.
BMapStruct generates implementations at compile time, creating simple, fast code without reflection.
CMapStruct uses runtime reflection to map fields dynamically, which slows down performance.
DMapStruct only works with XML configuration files to define mappings.
Attempts:
2 left
💡 Hint
Think about when MapStruct creates the code for mapping.