在編寫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的作業。 它包含一系列步驟(step
),可以使用JobLauncher
啟動。
<job>
標籤有2
個屬性,如下所列 -
編號 | 屬性 | 描述 |
---|---|---|
1 | id |
它是作業的標識,必須指定該屬性的值。 |
2 | restartable |
這是用於指定作業是否可重新啟動的屬性。 該屬性是可選的。 |
以下是Spring Batch作業的XML組態。
<job id = "jobid" restartable = "false" >
. . . . . . . .
. . . . . . . .
. . . . . . . . // Step definitions
</job>
步驟
<step>
標籤用於定義/組態Spring Batch作業的步驟。 它有以下三個屬性 -
編號 | 屬性 | 描述 |
---|---|---|
1 | id |
它是作業的標識,必須指定該屬性的值。 |
2 | next |
這是指定下一步的快捷方式。 |
3 | parent |
它用於指定組態應從其繼承的父bean 的名稱。 |
以下是Spring Batch步驟的XML組態。
<job id = "jobid">
<step id = "step1" next = "step2"/>
<step id = "step2" next = "step3"/>
<step id = "step3"/>
</job>
Chunk
這個標籤用於定義/組態一個tasklet
塊。它有以下四個屬性 -
編號 | 屬性 | 描述 |
---|---|---|
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 |
以下是Spring Batch塊的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
型別的類相關聯。
編號 | 屬性 | 描述 |
---|---|---|
1 | dataSource |
它用於指定定義資料源的bean名稱。 |
2 | transactionManager |
它用於指定定義事務管理器的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 bean用於使用關聯式資料庫來組態TransactionManager
。 這個bean與型別為org.springframework.transaction.platform.TransactionManager
的類相關聯。
<bean id = "transactionManager"
class = "org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
資料源
資料源bean用於組態資料源。 這個bean與型別為org.springframework.jdbc.datasource.DriverManagerDataSource
的類相關聯。
編號 | 屬性 | 描述 |
---|---|---|
1 | driverClassName |
這指定用於連線資料庫的驅動程式的類名稱。 |
2 | url |
這指定了資料庫的URL。 |
3 | username |
這指定了連線資料庫的使用者名。 |
4 | password |
這指定了與資料庫連線的密碼。 |
以下是資料源的範例組態。
<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>