springmapstruct

Mapstruct - How can I inject a spring dependency in the Generated Mapper class


I need to inject a spring service class in the generated mapper implementation, so that I can use it via

   @Mapping(target="x", expression="java(myservice.findById(id))")"

Is this applicable in Mapstruct-1.0?


Solution

  • It should be possible if you declare Spring as the component model and add a reference to the type of myservice:

    @Mapper(componentModel="spring", uses=MyService.class)
    public interface MyMapper { ... }
    

    That mechanism is meant for providing access to other mapping methods to be called by generated code, but you should be able to use them in the expression that way, too. Just make sure you use the correct name of the generated field with the service reference.