SimpleBatchConfig 没有选择我的 DefaultBatchConfigurer
SimpleBatchConfig not picking up my DefaultBatchConfigurer
我写了一个简单的演示来覆盖默认的jobrepo。而不是基于地图我想要一个 H2 数据库来保存持久元数据。
因此我写了一个 CustomBatchConfigurer 是这样的:
@Configuration
public class CustomBatchConfigurer extends DefaultBatchConfigurer {
@Autowired
@Qualifier("repo-db")
DataSource dataSource;
@Override
public void setDataSource(DataSource dataSource) {
super.setDataSource(dataSource);
}
@Bean(name = "repo-db")
public DataSource getJobRepoDataSource() {
return DataSourceBuilder
.create()
.url("jdbc:h2:tcp://localhost/~/src/spring-batch/batch_repo")
.driverClassName("org.h2.Driver")
.username("sa")
.password("test")
.type(HikariDataSource.class)
.build();
}
}
但是Spring-Batch 没有提取它:
o.s.b.c.c.a.DefaultBatchConfigurer: No datasource was provided...using a Map based JobRepository
我做错了什么?我以为我已经按照 spring 文档参考
上的说明进行操作
感谢和问候,
约尔格
您的配置应该更像这样:
@Configuration
public class CustomBatchConfiguration {
@Bean
public BatchConfigurer batchConfigurer(@Qualifier("repo-db") DataSource dataSource) {
return new DefaultBatchConfigurer(dataSource);
}
@Bean(name = "repo-db")
public DataSource jobRepoDataSource() {
return DataSourceBuilder
.create()
.url("jdbc:h2:tcp://localhost/~/src/spring-batch/batch_repo")
.driverClassName("org.h2.Driver")
.username("sa")
.password("test")
.type(HikariDataSource.class)
.build();
}
}
如果你的 bean 方法被代理(这是默认的),你也可以将第一个 bean 方法简化为
@Bean
public BatchConfigurer batchConfigurer() {
return new DefaultBatchConfigurer(jobRepoDataSource());
}
请再看看官方文档:https://docs.spring.io/spring-batch/docs/4.3.x/reference/html/job.html#javaConfig
我写了一个简单的演示来覆盖默认的jobrepo。而不是基于地图我想要一个 H2 数据库来保存持久元数据。
因此我写了一个 CustomBatchConfigurer 是这样的:
@Configuration
public class CustomBatchConfigurer extends DefaultBatchConfigurer {
@Autowired
@Qualifier("repo-db")
DataSource dataSource;
@Override
public void setDataSource(DataSource dataSource) {
super.setDataSource(dataSource);
}
@Bean(name = "repo-db")
public DataSource getJobRepoDataSource() {
return DataSourceBuilder
.create()
.url("jdbc:h2:tcp://localhost/~/src/spring-batch/batch_repo")
.driverClassName("org.h2.Driver")
.username("sa")
.password("test")
.type(HikariDataSource.class)
.build();
}
}
但是Spring-Batch 没有提取它:
o.s.b.c.c.a.DefaultBatchConfigurer: No datasource was provided...using a Map based JobRepository
我做错了什么?我以为我已经按照 spring 文档参考
上的说明进行操作感谢和问候, 约尔格
您的配置应该更像这样:
@Configuration
public class CustomBatchConfiguration {
@Bean
public BatchConfigurer batchConfigurer(@Qualifier("repo-db") DataSource dataSource) {
return new DefaultBatchConfigurer(dataSource);
}
@Bean(name = "repo-db")
public DataSource jobRepoDataSource() {
return DataSourceBuilder
.create()
.url("jdbc:h2:tcp://localhost/~/src/spring-batch/batch_repo")
.driverClassName("org.h2.Driver")
.username("sa")
.password("test")
.type(HikariDataSource.class)
.build();
}
}
如果你的 bean 方法被代理(这是默认的),你也可以将第一个 bean 方法简化为
@Bean
public BatchConfigurer batchConfigurer() {
return new DefaultBatchConfigurer(jobRepoDataSource());
}
请再看看官方文档:https://docs.spring.io/spring-batch/docs/4.3.x/reference/html/job.html#javaConfig