我需要一种摆脱fieldSetMapper.setTargetType
的方法,因为每次有新文件要阅读时我都不想添加POJO。有可能吗?
答案 0 :(得分:0)
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;
}
这里是Reflect的样子:
Method method = object.getClass().getMethod(methodName);
method.invoke(object);