Improve batch infrastructure configuration
Before this commit, EnableBatchProcessing was tied to a JDBC infrastructure. Therefore, it was impossible to use a non-JDBC job repository with that annotation. This commit removes the dependency to a JDBC infrastructure from EnableBatchProcessing and introduces new annotations to configure specific job repository implementations. It also updates the programmatic way of configuring infrastructure beans with a base configuration class for each supported job repository implementation. NB: The XML namespace was not changed accordingly as the XSD will not be updated starting from v6. Resolves #4718
This commit is contained in:
@@ -20,6 +20,7 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableJdbcJobRepository;
|
||||
import org.springframework.batch.core.job.builder.JobBuilder;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.step.builder.StepBuilder;
|
||||
@@ -41,6 +42,7 @@ import org.springframework.jdbc.support.JdbcTransactionManager;
|
||||
*/
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
@EnableJdbcJobRepository
|
||||
@Import(DataSourceConfiguration.class)
|
||||
public class AmqpJobConfiguration {
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ package org.springframework.batch.samples.helloworld;
|
||||
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.*;
|
||||
import org.springframework.batch.core.job.builder.JobBuilder;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.step.builder.StepBuilder;
|
||||
@@ -30,6 +30,7 @@ import org.springframework.jdbc.support.JdbcTransactionManager;
|
||||
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
@EnableJdbcJobRepository
|
||||
@Import(DataSourceConfiguration.class)
|
||||
public class HelloWorldJobConfiguration {
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import jakarta.persistence.EntityManagerFactory;
|
||||
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableJdbcJobRepository;
|
||||
import org.springframework.batch.core.job.builder.JobBuilder;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.step.builder.StepBuilder;
|
||||
@@ -38,6 +39,7 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||
import org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager;
|
||||
import org.springframework.orm.jpa.persistenceunit.PersistenceUnitManager;
|
||||
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
||||
import org.springframework.transaction.annotation.Isolation;
|
||||
|
||||
/**
|
||||
* Hibernate JPA dialect does not support custom tx isolation levels => overwrite with
|
||||
@@ -47,7 +49,8 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
||||
*/
|
||||
@Configuration
|
||||
@Import(DataSourceConfiguration.class)
|
||||
@EnableBatchProcessing(isolationLevelForCreate = "ISOLATION_DEFAULT", transactionManagerRef = "jpaTransactionManager")
|
||||
@EnableBatchProcessing
|
||||
@EnableJdbcJobRepository(isolationLevelForCreate = Isolation.DEFAULT, transactionManagerRef = "jpaTransactionManager")
|
||||
public class JpaJobConfiguration {
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -23,6 +23,7 @@ import jakarta.persistence.EntityManagerFactory;
|
||||
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableJdbcJobRepository;
|
||||
import org.springframework.batch.core.configuration.annotation.StepScope;
|
||||
import org.springframework.batch.core.job.builder.JobBuilder;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
@@ -45,6 +46,7 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||
import org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager;
|
||||
import org.springframework.orm.jpa.persistenceunit.PersistenceUnitManager;
|
||||
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
||||
import org.springframework.transaction.annotation.Isolation;
|
||||
|
||||
/**
|
||||
* Hibernate JPA dialect does not support custom tx isolation levels => overwrite with
|
||||
@@ -54,7 +56,8 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
||||
*/
|
||||
@Configuration
|
||||
@Import(DataSourceConfiguration.class)
|
||||
@EnableBatchProcessing(isolationLevelForCreate = "ISOLATION_DEFAULT", transactionManagerRef = "jpaTransactionManager")
|
||||
@EnableBatchProcessing
|
||||
@EnableJdbcJobRepository(isolationLevelForCreate = Isolation.DEFAULT, transactionManagerRef = "jpaTransactionManager")
|
||||
@EnableJpaRepositories(basePackages = "org.springframework.batch.samples.jpa")
|
||||
public class JpaRepositoryJobConfiguration {
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableJdbcJobRepository;
|
||||
import org.springframework.batch.core.job.builder.JobBuilder;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.integration.config.annotation.EnableBatchIntegration;
|
||||
@@ -42,6 +43,7 @@ import org.springframework.integration.jms.dsl.Jms;
|
||||
*/
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
@EnableJdbcJobRepository
|
||||
@EnableBatchIntegration
|
||||
@Import(value = { DataSourceConfiguration.class, BrokerConfiguration.class })
|
||||
public class ManagerConfiguration {
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
|
||||
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableJdbcJobRepository;
|
||||
import org.springframework.batch.core.configuration.annotation.StepScope;
|
||||
import org.springframework.batch.core.step.tasklet.Tasklet;
|
||||
import org.springframework.batch.integration.config.annotation.EnableBatchIntegration;
|
||||
@@ -43,6 +44,7 @@ import org.springframework.transaction.PlatformTransactionManager;
|
||||
*/
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
@EnableJdbcJobRepository
|
||||
@EnableBatchIntegration
|
||||
@Import(value = { DataSourceConfiguration.class, BrokerConfiguration.class })
|
||||
public class WorkerConfiguration {
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableJdbcJobRepository;
|
||||
import org.springframework.batch.core.job.builder.JobBuilder;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.integration.config.annotation.EnableBatchIntegration;
|
||||
@@ -42,6 +43,7 @@ import org.springframework.integration.jms.dsl.Jms;
|
||||
*/
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
@EnableJdbcJobRepository
|
||||
@EnableBatchIntegration
|
||||
@Import(value = { DataSourceConfiguration.class, BrokerConfiguration.class })
|
||||
public class ManagerConfiguration {
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
|
||||
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableJdbcJobRepository;
|
||||
import org.springframework.batch.core.configuration.annotation.StepScope;
|
||||
import org.springframework.batch.core.step.tasklet.Tasklet;
|
||||
import org.springframework.batch.integration.config.annotation.EnableBatchIntegration;
|
||||
@@ -43,6 +44,7 @@ import org.springframework.transaction.PlatformTransactionManager;
|
||||
*/
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
@EnableJdbcJobRepository
|
||||
@EnableBatchIntegration
|
||||
@Import(value = { DataSourceConfiguration.class, BrokerConfiguration.class })
|
||||
public class WorkerConfiguration {
|
||||
|
||||
Reference in New Issue
Block a user