在此批处理配置中,我在何处/如何创建TEstLayout的新实例?
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Bean
@Qualifier("callTestStep")
public Step callTestStep(StepBuilderFactory stepBuilders) {
return stepBuilders.get("callTestStep").tasklet(callTEstPgmTasklet()).build();
}
@Bean
public CallTEstPgm callTEstPgmTasklet() {
return new CallTEstPgm();
}
@Bean
@Qualifier("clearOutFileStep")
public Step clearOutFileStep(StepBuilderFactory stepBuilders) {
return stepBuilders.get("clearOutFile").tasklet(clearOutFileTasklet()).build();
}
@Bean
public ClearOutFile clearOutFileTasklet() {
return new ClearOutFile();
}
// tag::readerwriterprocessor[]
@Bean
@Scope("prototype")
JdbcCollectiveItemReader<TEstLayout> reader(DataSource dataSource) {
JdbcCollectiveItemReader<TEstLayout> databaseReader = new JdbcCollectiveItemReader<>();
databaseReader.setDataSource(dataSource);
databaseReader
.setSql(“select * from F33416BA order by x_id”)
);
databaseReader.setRowMapper(new TEstMultitoOneRowMapper());
return databaseReader;
}
@Bean
public TEstProcessor processor() {
return new TEstProcessor();
}
@Bean
public JdbcBatchItemWriter<TestBalanceDetailLayout> writer(DataSource dataSource) {
return new JdbcBatchItemWriterBuilder<TestBalanceDetailLayout>()
.itemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>())
.sql("INSERT INTO " + outFileLib.trim() + "/" + outFile.trim() + " Values (:wholeDetailString)")
.dataSource(dataSource).build();
}
@Bean
public Job BalanceSummary(JobCompletionNotificationListener listener, @Qualifier("callTestStep") Step callTestStep,
@Qualifier("clearOutFileStep") Step clearOutFileStep,
/* Step writeHeader, */ @Qualifier("writeDetailStep") Step writeDetailStep /* , Step writeFooter */) {
return jobBuilderFactory.get("Balance_Summary_File").incrementer(new RunIdIncrementer()).listener(listener)
.start(callTestStep).next(clearOutFileStep)
// .next(writeHeader)
.next(writeDetailStep)
// .next(writeFooter)
.build();
}
@Bean
@Qualifier("writeDetailStep")
public Step writeDetailStep(JdbcBatchItemWriter<TestBalanceDetailLayout> writer,
JdbcCollectiveItemReader<TEstLayout> reader, TEstProcessor processor) {
return stepBuilderFactory.get("writeDetail").<TEstLayout, TestBalanceDetailLayout>chunk(chunkSize)
.reader(reader).processor(processor).writer(writer).build();
}
}
这不是春豆的问题!是我的错。块处理一直将数据添加到数组列表中,直到达到块大小。在我的processor类中,我在process方法之外创建了output实例。所以在添加到arraylist的同时,它不断替换整个arraylist。
这就是我的块处理器发生的事情。在添加新元素时,ArrayList的所有元素都会发生变化?
我的处理器之前
public class TestProcessor implements ItemProcessor<TestLayout, TestBalanceDetailLayout> {
TestBalanceDetailLayout transformedDetail = new TestDetailLayout();
@Override
public TestBalanceDetailLayout process(final TestLayout testLayout) throws Exception { processor code }
public class TestProcessor implements ItemProcessor<TestLayout, TestBalanceDetailLayout> {
@Override
public TestBalanceDetailLayout process(final TestLayout testLayout) throws Exception {
TestBalanceDetailLayout transformedDetail = new TestDetailLayout();
processor code }
我有“N”没有的。客户/客户。对于每个客户/客户,我需要从数据库(读取器)中获取记录,然后我必须处理(处理器)客户/客户的所有记录,然后我必须将记录写入文件(写入器)。 如何将spring批处理作业循环N次?
我有一个家庭作业,要求我用用户输入生成一个n×n矩阵。我试过几种解决办法,但似乎都不管用。我想对你们中的许多人来说,这是一个相对简单的任务。 这是分配文本:编写一个方法,使用以下签名显示一个n×n矩阵:public static void printMatrix(int n)每个元素都是0或1,这是随机生成的。编写一个测试程序,提示用户输入n,并显示n×n矩阵。 我最近的尝试如下(显然我还没有调用
如何才能从pandas数据帧中只写入前N行或从P行到Q行到csv而不首先对df进行子化?由于内存问题,我无法对要导出的数据进行子集。 我正在考虑一个函数,它逐行写入csv。 谢谢你
问题内容: java.util.Random源代码的第294行说 为什么是这样? 问题答案: 该描述并不完全准确,因为0不是2的幂。更好的说法是 当n是2的幂或2的幂的负数或零时。 如果n是2的幂,则二进制中的n是单个1,后跟零。-n为2的补数是倒数+ 1,因此位排成一行 要了解其工作原理,请将二进制补码视为逆+ 1。 因为当您添加一个得到两个的补码时,您会一直进行到一个。 如果n不是2的幂,则结
问题内容: 在Java中,表达式为: 似乎等于: 尽管是有效的一元运算符,其优先级高于中的算术运算符。因此,编译器似乎假设该运算符不能为一元运算符,并解析该表达式。 但是,表达式: 即使存在以下唯一有效的解决方案,也不会编译: 和被指定为具有相同的优先级,那么为什么编译器为支持算术而解决看似模棱两可的问题,但为什么不这样做呢? 问题答案: 首先使用最大修改规则将文件标记化(转换为标记序列)-始终获
问题内容: 我正在尝试从文本文件读取特定行,但是我不想将文件加载到内存中(它可能会变得很大)。 我一直在寻找,但是我发现的每个示例都要求读取每一行(这将使我的代码变慢,因为有超过100,000行)或将整个内容加载到数组中并获取正确的元素(文件将包含很多行)输入)。 我想做的一个例子: “代码不是实际的代码,它是为了显示我想要的原理而组成的” 有没有办法做到这一点? - - -编辑 - - - 我刚