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