Java 映射时向Orika MappingContext添加外部数据
我想向MappingContext添加一些外部属性(不在我映射的对象中) 以下是我想要实现的目标:Java 映射时向Orika MappingContext添加外部数据,java,orika,Java,Orika,我想向MappingContext添加一些外部属性(不在我映射的对象中) 以下是我想要实现的目标: MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); mapperFactory.classMap(ObjA.class, ObjB.class).customize(new CustomMapper<ObjA, ObjB>() { @Override
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
mapperFactory.classMap(ObjA.class, ObjB.class).customize(new CustomMapper<ObjA, ObjB>() {
@Override
public void mapAtoB(ObjA objA, ObjB objB, MappingContext context) {
objB.setName((String) context.getProperty("name"));
}
}).byDefault().register();
MapperFacade mapper = mapperFactory.getMapperFacade();
ObjA objA = new ObjA();
ObjB objB = new ObjB();
MappingContext context = new MappingContext(); //PROBLEME IS HERE: MappingContext is a abstract class
context.setProperty("name", "Some information not in objA nor in objB");
mapper.map(objA, objB, context);
MapperFactory MapperFactory=newdefaultmapperfactory.Builder().build();
classMap(ObjA.class,ObjB.class).customize(新的CustomMapper(){
@凌驾
public void mapAtoB(ObjA ObjA、ObjB ObjB、MappingContext上下文){
objB.setName((字符串)context.getProperty(“名称”);
}
}).byDefault().register();
MapperFacade mapper=mapperFactory.getMapperFacade();
ObjA ObjA=新ObjA();
ObjB ObjB=新ObjB();
MappingContext上下文=新的MappingContext()//问题在于:MappingContext是一个抽象类
setProperty(“名称”,“某些信息不在objA或objB中”);
map(objA,objB,context);
我该怎么做?我可以向上下文动态添加数据吗?还是将其他数据传递给mapper的另一种方法?解决方案很简单:
MappingContext context = new MappingContext.Factory().getContext();
context.setProperty("name", "value");
mapper.map(objA, objB, context);
你刚刚发布的解决方案有什么问题?看起来是正确的方法。@AdamMichalik MappingContext是抽象的,无法实例化。我没有找到提取实际映射器上下文的方法,也没有找到使用MappingContextFactory构建新的映射器上下文的方法?似乎在处理完上下文后应该调用
release()
。