这是我的上下文:我使用byteBuddy动态生成一个类,该类根据外部配置将对象转换为另一个对象.我遇到了一些问题,我想找到另一种方法,就是我发现MapStruct的方法.
所以我尝试构建简单的映射器,我想知道是否有可能自定义注释以添加转换函数.比如我想:
@Mapping(
source = "mySourceField",
sourceType = "String",
target = "myTargetField",
targetType = "Integer",
transformation = {"toInteger", "toSquare"}
),
Run Code Online (Sandbox Code Playgroud)
在mapper实现上我会有类似的东西:
public TypeDest toSiteCatTag(TypeSrc obj) {
if ( obj == null ) {
return null;
}
TypeDest objDest = new TypeDest();
objDest.myTargetField = Formatter.toSquare(
Formatter.toInteger(obj.mySourceField));
return objDest;
}
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助我实现这一目标,我将不胜感激,这将为我节省大量时间.
提前致谢.
这是我的源对象:
public class Record {
public final long captureTime;
public final String environnement;
public final String bundle;
public final String type;
public final String id;
public final Map<String,Object> meta;
}
Run Code Online (Sandbox Code Playgroud)
这是我的目标对象:
public class MappedRecord {
public final long captureTime;
public final String environnement;
public final String bundle;
public final String type;
public final String id;
public final String ip;
public final String server;
}
Run Code Online (Sandbox Code Playgroud)
我的映射器如下所示:
public interface RecordMapper {
RecordMapper MAPPER = Mappers.getMapper( RecordMapper.class );
@Mappings({
@Mapping(source = "captureTime", target …Run Code Online (Sandbox Code Playgroud)