1 | initial version |
Mapstruct can be integrated with Webflux in a Spring Boot application by following these steps:
mapstruct
and mapstruct-processor
dependencies to the pom.xml
file.<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.2.Final</version>
<scope>provided</scope>
</dependency>
@Mapper
public interface PersonMapper {
PersonDto toDto(Person person);
Person toEntity(PersonDto personDto);
}
@MapperComponentModel
annotation to the mapping interface to enable Spring component model.@MapperComponentModel("spring")
public interface PersonMapper {
PersonDto toDto(Person person);
Person toEntity(PersonDto personDto);
}
@RestController
@RequestMapping("/api")
public class PersonController {
private final PersonMapper personMapper;
@Autowired
public PersonController(PersonMapper personMapper) {
this.personMapper = personMapper;
}
@GetMapping("/person/{id}")
public Mono<PersonDto> getPerson(@PathVariable String id) {
return personRepository.findById(id)
.map(personMapper::toDto);
}
@PostMapping("/person")
public Mono<Void> createPerson(@RequestBody Mono<PersonDto> personDtoMono) {
return personDtoMono
.map(personMapper::toEntity)
.flatMap(personRepository::save)
.then();
}
}
org.mapstruct.spring.mapstruct-spring-boot-starter
dependency.<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-spring-boot-starter</artifactId>
<version>1.4.2.Final</version>
</dependency>
By following these steps, Mapstruct can be integrated with Webflux in a Spring Boot application.