← All posts

Spring Boot + MapStruct

Copying fields from one object to another gets old fast. MapStruct does it for me, and it’s one of my favorite libraries for mapping in Java. Let me show you how I wire it up with Spring Boot.

Say we have two classes, Customer and CustomerDTO.

Customer.java

@Entity
@Data
public class Customer {
    @Id
    private String id;

    private String firstName;

    private String lastName;

}

CustomerDTO.java

@Data
public class CustomerDTO {

    private String firstName;

    private String lastName;

}

Getting MapStruct working with Spring Boot only takes a few steps.

Step 1 — Add the dependency in your pom.xml

<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>
    <version>1.3.1.Final</version>
</dependency>


<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>1.3.1.Final</version>
    <scope>provided</scope>
</dependency>

Step 2 — Create a mapper for your model (here it’s CustomerMapper)

CustomerMapper.java

@Mapper(componentModel = "spring")
public interface CustomerMapper {

    CustomerDTO toDto(Customer customer);

}

Step 3 — Inject it

@Autowired
private CustomerMapper mapper;

Step 4 — Map it!

Customer customer = ...
CustomerDTO dto = mapper.toDto(customer);

Done!