在创建应用程序bean之前初始化Spring批处理DB

时间:2015-04-01 10:14:54

标签: java spring spring-boot spring-batch

我试图像这样创建一个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,因为春季启动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时,我会得到相同的#34;没有合格的bean&#34;错误。

那么,如何确保在创建bean之前初始化spring批处理模式?

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用@DependsOn()注释?我不知道ConditionOnBean ..