给我一个spring batch双数据源的例子,H2与DB2,并且在application.yml中 指定默认数据源为h2
时间: 2024-03-12 07:48:35 浏览: 176
好的,以下是一个基于 Spring Boot 2.x 和 Spring Batch 的双数据源例子,其中使用 H2 和 DB2 作为数据源:
首先在 pom.xml 文件中添加 H2 和 DB2 的 JDBC 驱动依赖:
```xml
<dependencies>
<!-- Spring Boot Starter Batch -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<!-- H2 Database -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<!-- DB2 Database -->
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>jcc</artifactId>
<version>11.5.0.0</version>
</dependency>
</dependencies>
```
在 application.yml 文件中配置双数据源:
```yaml
spring:
datasource:
# H2 数据源
h2:
url: jdbc:h2:mem:testdb
driver-class-name: org.h2.Driver
username: sa
password:
# DB2 数据源
db2:
url: jdbc:db2://localhost:50000/sample
driver-class-name: com.ibm.db2.jcc.DB2Driver
username: db2admin
password: password
batch:
job:
names: job1, job2 # 定义需要运行的 Job 名称
```
然后在代码中定义两个数据源,并分别注入到 Job 中:
```java
@Configuration
@EnableBatchProcessing
public class BatchConfig {
@Bean
@ConfigurationProperties("spring.datasource.h2")
public DataSource h2DataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.db2")
public DataSource db2DataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public Job job1(Step step1) {
return jobBuilderFactory.get("job1")
.start(step1)
.build();
}
@Bean
public Job job2(Step step2) {
return jobBuilderFactory.get("job2")
.start(step2)
.build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.<String, String>chunk(1)
.reader(new ListItemReader<>(Arrays.asList("Hello", "World")))
.writer(list -> list.forEach(System.out::println))
.build();
}
@Bean
public Step step2() {
return stepBuilderFactory.get("step2")
.<String, String>chunk(1)
.reader(new JdbcCursorItemReaderBuilder<String>()
.name("db2Reader")
.dataSource(db2DataSource()) // 使用 DB2 数据源
.sql("SELECT NAME FROM EMPLOYEE") // DB2 查询语句
.rowMapper((resultSet, rowNum) -> resultSet.getString("NAME"))
.build())
.writer(list -> list.forEach(System.out::println))
.build();
}
}
```
其中,step1 使用 H2 数据源,step2 使用 DB2 数据源,这样就实现了基于 Spring Batch 的双数据源配置。
最后在启动类中添加 @SpringBootApplication 注解即可启动应用。
注意:在实际开发中,应该根据实际情况选择适合的数据源,这里只是提供一个示例。
阅读全文