這節主要介紹下集成springjava
1.修改上一節中的AppleConverter,給@Mapper添加componentModel字段賦值爲springspring
@Mapper(componentModel = "spring") abstract class AppleConverter {}
2.這麼easy就能夠使用了app
@RestController class MyController{ @Autowired lateinit var appleConverter: AppleConverter @GetMapping("/hello") fun sayHello():String{ val apple = Apple(1,"my apple",true) println(apple) val appleDto = appleConverter.convertToDto(apple) println(appleDto) val appleModel = appleConverter.convertToModel(appleDto) println(appleModel) return "hello" } }
3.訪問一下輸出,跟咱們期待的效果同樣ide
Apple(appleId=1, appleName=my apple, real=true) AppleDto(appleId=1, appleName=my apple, description=水果) Apple(appleId=1, appleName=my apple, real=true)
4.讓咱們看一下mapstruct給咱們生成了什麼code
import javax.annotation.Generated; import org.springframework.stereotype.Component; @Generated( value = "org.mapstruct.ap.MappingProcessor", date = "2018-08-29T10:19:12+0800", comments = "version: 1.3.0.Beta1, compiler: javac, environment: Java 1.8.0_172 (Oracle Corporation)" ) @Component public class AppleConverterImpl extends AppleConverter { @Override public AppleDto convertToDto(Apple apple) { if ( apple == null ) { return null; } AppleDto appleDto = new AppleDto(); appleDto.setAppleId( apple.getAppleId() ); appleDto.setAppleName( apple.getAppleName() ); afterConvertToDto( apple, appleDto ); return appleDto; } @Override public Apple convertToModel(AppleDto appleDto) { if ( appleDto == null ) { return null; } Apple apple = new Apple(); apple.setAppleId( appleDto.getAppleId() ); apple.setAppleName( appleDto.getAppleName() ); afterConvertToModel( appleDto, apple ); return apple; } }
咱們能夠看到,生成的代碼加上了Component註解,AppleConverterImpl就成爲受spring管理的bean了,因此咱們能夠在任何地方注入了component