0
我需要一种方法来摆脱fieldSetMapper.setTargetType
,因为我不想每次有新文件读取时添加POJO。可能吗?BeanWrapperFieldSetMapper替代方法,以避免setTargetType/setPrototypeBeanName
我需要一种方法来摆脱fieldSetMapper.setTargetType
,因为我不想每次有新文件读取时添加POJO。可能吗?BeanWrapperFieldSetMapper替代方法,以避免setTargetType/setPrototypeBeanName
Springbatch有可用出的现成的几个FieldSetMapper
实现:Documentation (FieldSetMapper)
比如,你可以使用PassThroughFieldSetMapper
获得FieldSet
对象在您的处理器。你可以用ArrayFieldSetMapper
来得到一个数组对象。我想你需要实现你自己的FieldSetMapper
。例如,它可以有一个names
属性(带一个setter)和一个targetClass
属性(带一个setter)。使用Reflect,然后可以将对象转换为所需的类并根据作为参数传递的名称调用setter。
这里有一个FieldSetMapper的样子:
@Override
public Report mapFieldSet(FieldSet fieldSet) throws BindException {
T object;
object.setField(fieldSet.readString(0));
return object;
}
这里就是反映的样子:
Method method = object.getClass().getMethod(methodName);
method.invoke(object);
我已经更新的问题,其实我需要摆脱fieldSetMapper.setTargetType的,因为我不想继续添加新的POJO – explorer
@explorer'setTargetType'方法只属于'BeanWrapperFieldSetMapper',所以你可以使用其他任何(甚至是自定义的)'FieldSetMapper'来删除它。 – Thrax