spring 集成 Orika Bean映射框架
前文介绍了Orika,本文介绍如何在spring框架中集成使用。
spring中注册
与spring 集成仅需定义统一的mapperFactory,然后把需要转换的bean依次注册至mapperFactory。
package com.mytutorial;
import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.impl.ConfigurableMapper;
import org.springframework.stereotype.Component;
@Component
public class MyCustomMapper extends ConfigurableMapper {
protected void configure(MapperFactory factory) {
factory.classMap(PersonDomain.class, PersonDto.class)
.field("name", "nameFull")
.field("age", "ageThisYear").byDefault()
.register();
}
}
这里可以配置多个转换。下面增加配置类扫描ConfigurableMapper。
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages={
"com.mytutorial"})
public class AppConfig {
}
测试映射
package com.mytutorial;
import ma.glasnost.orika.MapperFacade;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Component;
public class SimpleTest {
@Autowired
MapperFacade mapperFacade;
@Test
public void mapPesonDomainToPersonDto() {
PersonDomain p1Domain = new PersonDomain();
p1Domain.setName("John Smith");
p1Domain.setAge(25);
//map source: p1Domain to target:p1Dto using orika
PersonDto p1Dto = mapperFacade.map(p1Domain, PersonDto.class);
System.out.println("after mapping with orika: p1Dto = " + p1Dto);
}
}
Orika也支持双向映射,使用比较方便。
总结
本文介绍如何在spring中集成使用Orika,简化映射工厂定义。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/80708697