Spring Batch 简明教程
Spring Batch - Configuration
在编写Spring Batch应用程序时,我们将使用Spring Batch命名空间中提供的XML标记配置作业、步骤、JobLauncher、JobRepository、事务管理器、读取器和写入器。因此,您需要像下面显示的那样在XML文件中包含此命名空间。
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:batch = "http://www.springframework.org/schema/batch"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.springframework.org/schema/batch
http://www.springframework.org/schema/batch/spring-batch-2.2.xsd
http://www.springframework.org/schema/bean
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
在以下部分中,我们将讨论Spring Batch命名空间中可用的各种标记、它们的属性和示例。
Job
此标记用于定义/配置SpringBatch的作业。它包含一组步骤,并且可以使用JobLauncher启动它。
此标记具有如下所列的2个属性−
S.No |
Attribute & Description |
1 |
Id 它是作业的ID,此属性必须指定值。 |
2 |
restartable 这是用于指定作业是否可重新启动的属性。此属性是可选的。 |
以下是SpringBatch作业的XML配置。
<job id = "jobid" restartable = "false" >
. . . . . . . .
. . . . . . . .
. . . . . . . . // Step definitions
</job>
Step
此标记用于定义/配置SpringBatch作业的步骤。它具有以下三个属性−
S.No |
Attribute & Description |
1 |
Id 它是作业的ID,此属性必须指定值。 |
2 |
next 它表示的基本上是指定下一步的快捷方式。 |
3 |
parent 用来指定父级 bean 的名称,该 bean 所在的位置就是配置所应该继承的位置。 |
以下内容为 SpringBatch 步骤的 XML 配置。
<job id = "jobid">
<step id = "step1" next = "step2"/>
<step id = "step2" next = "step3"/>
<step id = "step3"/>
</job>
Chunk
此标签用来定义/配置 tasklet 的一部分。它有以下四个属性:
S.No |
Attribute & Description |
1 |
reader 它表示读取器 bean 的名称。它接受类型 org.springframework.batch.item.ItemReader 的值。 |
2 |
writer 它表示读取器 bean 的名称。它接受类型 org.springframework.batch.item.ItemWriter 的值。 |
3 |
processor 它表示读取器 bean 的名称。它接受类型 org.springframework.batch.item.ItemProcessor 的值。 |
4 |
commit-interval 用来指定在提交事务前要处理的项目的个数。 |
以下内容为 SpringBatch 的部分内容 XML 配置。
<batch:step id = "step1">
<batch:tasklet>
<batch:chunk reader = "xmlItemReader"
writer = "mysqlItemWriter" processor = "itemProcessor" commit-interval = "10">
</batch:chunk>
</batch:tasklet>
</batch:step>
JobRepository
JobRepository Bean 可用于通过关系数据库配置一个 JobRepository。这个 bean 与类型为 org.springframework.batch.core.repository.JobRepository 的类关联。
S.No |
Attribute & Description |
1 |
dataSource 用来指定定义数据源的 bean 的名称。 |
2 |
transactionManager 用来指定 bean 的名称,该 bean 会定义一个事务管理器。 |
3 |
databaseType 它指定在作业存储库所用的关系数据库类型。 |
JobRepository 的配置范例如下。
<bean id = "jobRepository"
class = "org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<property name = "dataSource" ref = "dataSource" />
<property name = "transactionManager" ref="transactionManager" />
<property name = "databaseType" value = "mysql" />
</bean>
JobLauncher
JobLauncher Bean 可用于配置 JobLauncher。它与类 org.springframework.batch.core.launch.support.SimpleJobLauncher 关联 (在我们的程序中)。这个 bean 有一个名为 jobrepository 的属性,用于指定定义 jobrepository 的 bean 的名称。
JobLauncher 的配置范例如下。
<bean id = "jobLauncher"
class = "org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name = "jobRepository" ref = "jobRepository" />
</bean>
TransactionManager
TransactionManager Bean 可用于通过关系数据库配置 TransactionManager。这个 bean 与类型为 org.springframework.transaction.platform.TransactionManager 的类关联。
<bean id = "transactionManager"
class = "org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
DataSource
Datasource Bean 用来配置 Datasource 。这个 Bean 与类型为 org.springframework.jdbc.datasource.DriverManagerDataSource 的类关联。
S.No |
Attribute & Description |
1 |
driverClassName 它指定与数据库连接时所用的驱动程序的类别名称。 |
2 |
url 这指定数据库的网址 |
3 |
username 这指定用于连接到数据库的用户名 |
4 |
password 这指定用于连接到数据库的密码 |
以下为 datasource 的示例配置
<bean id = "dataSource"
class = "org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name = "driverClassName" value = "com.mysql.jdbc.Driver" />
<property name = "url" value = "jdbc:mysql://localhost:3306/details" />
<property name = "username" value = "myuser" />
<property name = "password" value = "password" />
</bean>