如何在 Spring 批处理中定义 'java.lang.String' 类型的 bean?
How do I define a bean of type 'java.lang.String' in Spring Batch?
考虑在您的配置中定义一个 'java.lang.String' 类型的 bean。
是我使用以下 reader 方法得到的错误:
@Bean
public JdbcCursorItemReader<Assessment> getReader(DataSource datasource, String query, String name) {
return new JdbcCursorItemReaderBuilder<Assessment>()
.dataSource(datasource)
.sql(query)
.name(name)
.rowMapper(new AssessmentMapper())
.build();
}
步骤配置如下:
public Step step1(StepBuilderFactory factory,
DataSource dataSource,
ItemReader reader,
ExpireAssessmentWriter writer, //use custom writer
AssessmentItemProcessor processor,
PlatformTransactionManager platformTransactionManager){
return stepBuilderFactory.get("step1")
.transactionManager(platformTransactionManager)
.<Assessment,Assessment>chunk(10)
.reader(getReader(dataSource, READER_QUERY, "AssessmentReader"))
.processor(processor)
.writer(writer)
.build();
}
为什么在尝试将字符串传递给 getReader 时出现错误?
编辑:
错误来自 getReader 中的第二个参数。我只是想将查询作为字符串传递,但错误输出如下所示:
Description:
Parameter 0 of method getReader in com.batch.config.ExpirationUtilityConfig required a bean of type 'java.lang.String' that could not be found.
Action:
Consider defining a bean of type 'java.lang.String' in your configuration.
您需要删除 getReader()
上的 @Bean
。由于您在步骤定义中调用 getReader
,因此无需将 reader 声明为 Spring bean。
您还需要从步骤定义的参数列表中删除 ItemReader。
考虑在您的配置中定义一个 'java.lang.String' 类型的 bean。 是我使用以下 reader 方法得到的错误:
@Bean
public JdbcCursorItemReader<Assessment> getReader(DataSource datasource, String query, String name) {
return new JdbcCursorItemReaderBuilder<Assessment>()
.dataSource(datasource)
.sql(query)
.name(name)
.rowMapper(new AssessmentMapper())
.build();
}
步骤配置如下:
public Step step1(StepBuilderFactory factory,
DataSource dataSource,
ItemReader reader,
ExpireAssessmentWriter writer, //use custom writer
AssessmentItemProcessor processor,
PlatformTransactionManager platformTransactionManager){
return stepBuilderFactory.get("step1")
.transactionManager(platformTransactionManager)
.<Assessment,Assessment>chunk(10)
.reader(getReader(dataSource, READER_QUERY, "AssessmentReader"))
.processor(processor)
.writer(writer)
.build();
}
为什么在尝试将字符串传递给 getReader 时出现错误?
编辑: 错误来自 getReader 中的第二个参数。我只是想将查询作为字符串传递,但错误输出如下所示:
Description:
Parameter 0 of method getReader in com.batch.config.ExpirationUtilityConfig required a bean of type 'java.lang.String' that could not be found.
Action:
Consider defining a bean of type 'java.lang.String' in your configuration.
您需要删除 getReader()
上的 @Bean
。由于您在步骤定义中调用 getReader
,因此无需将 reader 声明为 Spring bean。
您还需要从步骤定义的参数列表中删除 ItemReader。