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>