在创建应用程序 bean 之前初始化 Spring 个批处理 DB
Initialize Spring batch DB before application bean is created
我正在尝试像这样创建一个 bean:
@Bean
public Clock clock(JobExplorer explorer, Environment environment) {
// Check last run time of job and create a Clock bean
}
但是当应用程序启动时,我收到错误消息:ORA-00942: table or view does not exist
因为 spring 批处理模式尚未由 spring 引导程序的 BatchAutoConfiguration
创建。
然后,我尝试这样做:
@Bean
@ConditionOnBean(BatchDatabaseInitializer.class)
public Clock clock(JobExplorer explorer, Environment environment) {
// Check last run time of job and create a Clock bean
}
这将错误从创建时钟 bean 时转移到创建需要 Clock
的 bean 时:
@Bean(name = "reader")
public ItemReader<Record> itemReader(
JdbcTemplate jdbcTemplate, Clock clock) {
// Create item reader
}
Error: No qualifying bean of type [java.time.Clock] found for dependency
这一直在级联。如果我将 @ConditionalOnBean
放在 itemReader
方法上,那么当创建需要 itemReader
的 bean 时,我会得到相同的 "No qualifying bean" 错误。
那么,如何确保 spring 在创建 bean 之前初始化批处理模式?
您尝试过使用 @DependsOn()
注释吗?我不知道 ConditionOnBean..
我正在尝试像这样创建一个 bean:
@Bean
public Clock clock(JobExplorer explorer, Environment environment) {
// Check last run time of job and create a Clock bean
}
但是当应用程序启动时,我收到错误消息:ORA-00942: table or view does not exist
因为 spring 批处理模式尚未由 spring 引导程序的 BatchAutoConfiguration
创建。
然后,我尝试这样做:
@Bean
@ConditionOnBean(BatchDatabaseInitializer.class)
public Clock clock(JobExplorer explorer, Environment environment) {
// Check last run time of job and create a Clock bean
}
这将错误从创建时钟 bean 时转移到创建需要 Clock
的 bean 时:
@Bean(name = "reader")
public ItemReader<Record> itemReader(
JdbcTemplate jdbcTemplate, Clock clock) {
// Create item reader
}
Error: No qualifying bean of type [java.time.Clock] found for dependency
这一直在级联。如果我将 @ConditionalOnBean
放在 itemReader
方法上,那么当创建需要 itemReader
的 bean 时,我会得到相同的 "No qualifying bean" 错误。
那么,如何确保 spring 在创建 bean 之前初始化批处理模式?
您尝试过使用 @DependsOn()
注释吗?我不知道 ConditionOnBean..