我的Spring批处理代码读取数据并将数据写入数据库。我有两个批处理作业类,并且两个作业在读取器对象下面的读取器逻辑(几乎相同)具有不同的pojo泛型类型(如Pojo1和Pojo2)。
FlatFileItemReader<DifferentPojoName> reader = new FlatFileItemReader<>();
现在,我想在一个单独的@Component类中创建一个通用的读取器逻辑。这样,两个作业类将使用相同的读取器逻辑。
但是问题是如何在阅读器对象中动态更改Pojo类型?
请提出建议。
最佳答案
如何在Java中动态更改对象的泛型类型?
泛型是提高代码类型安全性的编译功能。
因此这是不可能的。
较干净的方法是使用所需的泛型声明不同的FlatFileItemReader
bean。@Bean
批注可能对您有所帮助。
@Bean
public FlatFileItemReader<Foo> readerFoo(){
return new FlatFileItemReader<>();
}
@Bean
public FlatFileItemReader<Bar> readerBar(){
return new FlatFileItemReader<>();
}
现在将它们注入您需要的位置:
@Autowired
FlatFileItemReader<Bar> readerBar;
@Autowired
FlatFileItemReader<Foo> readerFoo;