Add option to provide a custom JobKeyGenerator in JdbcJobInstanceDao

Resolves #3926
This commit is contained in:
Robert McNees
2023-04-03 14:42:30 -04:00
committed by Mahmoud Ben Hassine
parent 2c97974366
commit e36a44788d
12 changed files with 349 additions and 3 deletions

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:mem:test;sql.enforce_strict_size=true;hsqldb.tx=mvcc" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
<jdbc:initialize-database>
<jdbc:script location="org/springframework/batch/core/schema-drop-hsqldb.sql"/>
<jdbc:script location="org/springframework/batch/core/schema-hsqldb.sql"/>
</jdbc:initialize-database>
<bean id="transactionManager" class="org.springframework.jdbc.support.JdbcTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.SimpleJobRepository">
<constructor-arg ref="jobInstanceDao" />
<constructor-arg ref="jobExecutionDao" />
<constructor-arg ref="stepExecutionDao" />
<constructor-arg ref="executionContextDao" />
</bean>
<bean id="executionContextDao" class="org.springframework.batch.core.repository.dao.JdbcExecutionContextDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="serializer" ref="serializer"/>
</bean>
<bean id="jobInstanceDao" class="org.springframework.batch.core.repository.dao.JdbcJobInstanceDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="jobInstanceIncrementer" ref="jobInstanceIncrementer" />
<property name="jobKeyGenerator" ref="jobKeyGenerator" />
</bean>
<bean id="jobKeyGenerator" class="org.springframework.batch.core.repository.dao.CustomJobKeyGenerator" />
<bean id="jobExecutionDao" class="org.springframework.batch.core.repository.dao.JdbcJobExecutionDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="jobExecutionIncrementer" ref="jobExecutionIncrementer" />
</bean>
<bean id="stepExecutionDao" class="org.springframework.batch.core.repository.dao.JdbcStepExecutionDao">
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="stepExecutionIncrementer" ref="stepExecutionIncrementer" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource" />
</bean>
<bean id="serializer" class="org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer"/>
<bean id="jobInstanceIncrementer" class="org.springframework.jdbc.support.incrementer.HsqlMaxValueIncrementer">
<constructor-arg name="dataSource" ref="dataSource"/>
<constructor-arg name="incrementerName" value="BATCH_JOB_SEQ"/>
<constructor-arg name="columnName" value="ID"/>
</bean>
<bean id="jobExecutionIncrementer" class="org.springframework.jdbc.support.incrementer.HsqlMaxValueIncrementer">
<constructor-arg name="dataSource" ref="dataSource"/>
<constructor-arg name="incrementerName" value="BATCH_JOB_EXECUTION_SEQ"/>
<constructor-arg name="columnName" value="ID"/>
</bean>
<bean id="stepExecutionIncrementer" class="org.springframework.jdbc.support.incrementer.HsqlMaxValueIncrementer">
<constructor-arg name="dataSource" ref="dataSource"/>
<constructor-arg name="incrementerName" value="BATCH_STEP_EXECUTION_SEQ"/>
<constructor-arg name="columnName" value="ID"/>
</bean>
</beans>