diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/annotation/EnableBatchProcessing.java b/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/annotation/EnableBatchProcessing.java
index 999706a53..4b653530d 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/annotation/EnableBatchProcessing.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/annotation/EnableBatchProcessing.java
@@ -89,7 +89,7 @@ import org.springframework.transaction.PlatformTransactionManager;
* {@link org.springframework.batch.core.configuration.support.MapJobRegistry})
*
a {@link org.springframework.batch.core.launch.JobOperator} (bean name
* "jobOperator" of type
- * {@link org.springframework.batch.core.launch.support.SimpleJobOperator})
+ * {@link org.springframework.batch.core.launch.support.TaskExecutorJobOperator})
* a
* {@link org.springframework.batch.core.configuration.support.JobRegistrySmartInitializingSingleton}
* (bean name "jobRegistrySmartInitializingSingleton" of type
diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/JobOperatorFactoryBean.java b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/JobOperatorFactoryBean.java
index ed8425827..920a6fe0d 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/JobOperatorFactoryBean.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/JobOperatorFactoryBean.java
@@ -45,7 +45,7 @@ import org.springframework.util.Assert;
* {@link JobOperator}.
*
* @see JobOperator
- * @see SimpleJobOperator
+ * @see TaskExecutorJobOperator
* @author Mahmoud Ben Hassine
* @since 5.0
*/
@@ -174,15 +174,15 @@ public class JobOperatorFactoryBean implements FactoryBean, Initial
return (JobOperator) this.proxyFactory.getProxy(getClass().getClassLoader());
}
- private SimpleJobOperator getTarget() throws Exception {
- SimpleJobOperator simpleJobOperator = new SimpleJobOperator();
- simpleJobOperator.setJobRegistry(this.jobRegistry);
- simpleJobOperator.setJobRepository(this.jobRepository);
- simpleJobOperator.setTaskExecutor(this.taskExecutor);
- simpleJobOperator.setMeterRegistry(this.meterRegistry);
- simpleJobOperator.setJobParametersConverter(this.jobParametersConverter);
- simpleJobOperator.afterPropertiesSet();
- return simpleJobOperator;
+ private TaskExecutorJobOperator getTarget() throws Exception {
+ TaskExecutorJobOperator taskExecutorJobOperator = new TaskExecutorJobOperator();
+ taskExecutorJobOperator.setJobRegistry(this.jobRegistry);
+ taskExecutorJobOperator.setJobRepository(this.jobRepository);
+ taskExecutorJobOperator.setTaskExecutor(this.taskExecutor);
+ taskExecutorJobOperator.setMeterRegistry(this.meterRegistry);
+ taskExecutorJobOperator.setJobParametersConverter(this.jobParametersConverter);
+ taskExecutorJobOperator.afterPropertiesSet();
+ return taskExecutorJobOperator;
}
}
diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobOperator.java b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobOperator.java
index c81eebc2b..ddaac05fb 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobOperator.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobOperator.java
@@ -81,15 +81,18 @@ import org.springframework.util.Assert;
* @author Will Schipp
* @author Mahmoud Ben Hassine
* @since 2.0
+ * @deprecated since 6.0 in favor of {@link TaskExecutorJobOperator}. Scheduled for
+ * removal in 6.2 or later.
*/
+@Deprecated(since = "6.0", forRemoval = true)
public class SimpleJobOperator extends TaskExecutorJobLauncher implements JobOperator, InitializingBean {
private static final String ILLEGAL_STATE_MSG = "Illegal state (only happens on a race condition): "
+ "%s with name=%s and parameters=%s";
- private ListableJobLocator jobRegistry;
+ protected ListableJobLocator jobRegistry;
- private JobParametersConverter jobParametersConverter = new DefaultJobParametersConverter();
+ protected JobParametersConverter jobParametersConverter = new DefaultJobParametersConverter();
private final Log logger = LogFactory.getLog(getClass());
diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/TaskExecutorJobOperator.java b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/TaskExecutorJobOperator.java
new file mode 100644
index 000000000..8eb25f342
--- /dev/null
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/TaskExecutorJobOperator.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2022-2025 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.batch.core.launch.support;
+
+import org.springframework.batch.core.configuration.JobRegistry;
+import org.springframework.batch.core.configuration.ListableJobLocator;
+import org.springframework.batch.core.launch.JobOperator;
+import org.springframework.batch.core.repository.JobRepository;
+
+/**
+ * A {@link org.springframework.core.task.TaskExecutor}-based implementation of the
+ * {@link JobOperator} interface. The following dependencies are required:
+ *
+ *
+ * - {@link JobRepository}
+ *
- {@link JobRegistry}
+ *
+ *
+ * This class can be instantiated with a {@link JobOperatorFactoryBean} to create a
+ * transactional proxy around the job operator.
+ *
+ * @see JobOperatorFactoryBean
+ * @author Dave Syer
+ * @author Lucas Ward
+ * @author Will Schipp
+ * @author Mahmoud Ben Hassine
+ * @since 6.0
+ */
+public class TaskExecutorJobOperator extends SimpleJobOperator {
+
+ /**
+ * Public setter for the {@link ListableJobLocator}.
+ * @param jobRegistry the {@link ListableJobLocator} to set
+ */
+ public void setJobRegistry(ListableJobLocator jobRegistry) {
+ this.jobRegistry = jobRegistry;
+ }
+
+}
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/launch/support/JobOperatorFactoryBeanTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/launch/support/JobOperatorFactoryBeanTests.java
index 0b1241c01..2ef929624 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/launch/support/JobOperatorFactoryBeanTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/launch/support/JobOperatorFactoryBeanTests.java
@@ -61,7 +61,7 @@ class JobOperatorFactoryBeanTests {
// then
Assertions.assertNotNull(jobOperator);
Object targetObject = AopTestUtils.getTargetObject(jobOperator);
- Assertions.assertInstanceOf(SimpleJobOperator.class, targetObject);
+ Assertions.assertInstanceOf(TaskExecutorJobOperator.class, targetObject);
Assertions.assertEquals(this.transactionManager, getTransactionManagerSetOnJobOperator(jobOperator));
}
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/launch/support/SimpleJobOperatorTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/launch/support/TaskExecutorJobOperatorTests.java
similarity index 97%
rename from spring-batch-core/src/test/java/org/springframework/batch/core/launch/support/SimpleJobOperatorTests.java
rename to spring-batch-core/src/test/java/org/springframework/batch/core/launch/support/TaskExecutorJobOperatorTests.java
index 30e2ccd4b..a7f351dc3 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/launch/support/SimpleJobOperatorTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/launch/support/TaskExecutorJobOperatorTests.java
@@ -47,9 +47,7 @@ import org.springframework.batch.core.launch.NoSuchJobException;
import org.springframework.batch.core.launch.NoSuchJobExecutionException;
import org.springframework.batch.core.launch.NoSuchJobInstanceException;
import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;
-import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;
import org.springframework.batch.core.repository.JobRepository;
-import org.springframework.batch.core.repository.JobRestartException;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.StoppableTasklet;
import org.springframework.batch.core.step.tasklet.TaskletStep;
@@ -74,9 +72,9 @@ import static org.mockito.Mockito.when;
* @author Jinwoo Bae
*
*/
-class SimpleJobOperatorTests {
+class TaskExecutorJobOperatorTests {
- private SimpleJobOperator jobOperator;
+ private TaskExecutorJobOperator jobOperator;
protected Job job;
@@ -99,7 +97,7 @@ class SimpleJobOperatorTests {
}
};
- jobOperator = new SimpleJobOperator() {
+ jobOperator = new TaskExecutorJobOperator() {
@Override
public JobExecution run(Job job, JobParameters jobParameters) {
return new JobExecution(new JobInstance(123L, job.getName()), 999L, jobParameters);
@@ -143,13 +141,13 @@ class SimpleJobOperatorTests {
@Test
void testMandatoryProperties() {
- jobOperator = new SimpleJobOperator();
+ jobOperator = new TaskExecutorJobOperator();
assertThrows(IllegalStateException.class, jobOperator::afterPropertiesSet);
}
/**
* Test method for
- * {@link org.springframework.batch.core.launch.support.SimpleJobOperator#startNextInstance(java.lang.String)}
+ * {@link org.springframework.batch.core.launch.support.TaskExecutorJobOperator#startNextInstance(java.lang.String)}
* .
*/
@Test
diff --git a/spring-batch-core/src/test/resources/org/springframework/batch/core/repository/dao/OptimisticLockingFailureTests-context.xml b/spring-batch-core/src/test/resources/org/springframework/batch/core/repository/dao/OptimisticLockingFailureTests-context.xml
index b62728286..c85a00a2c 100644
--- a/spring-batch-core/src/test/resources/org/springframework/batch/core/repository/dao/OptimisticLockingFailureTests-context.xml
+++ b/spring-batch-core/src/test/resources/org/springframework/batch/core/repository/dao/OptimisticLockingFailureTests-context.xml
@@ -48,7 +48,7 @@
-
+
diff --git a/spring-batch-core/src/test/resources/simple-job-launcher-context.xml b/spring-batch-core/src/test/resources/simple-job-launcher-context.xml
index 2b0a31aa8..3a676bfbe 100644
--- a/spring-batch-core/src/test/resources/simple-job-launcher-context.xml
+++ b/spring-batch-core/src/test/resources/simple-job-launcher-context.xml
@@ -15,7 +15,7 @@
p:dataSource-ref="dataSource" p:transactionManager-ref="transactionManager" />
+
diff --git a/spring-batch-samples/src/main/resources/org/springframework/batch/samples/misc/jmx/adhoc-job-launcher-context.xml b/spring-batch-samples/src/main/resources/org/springframework/batch/samples/misc/jmx/adhoc-job-launcher-context.xml
index 457fb2e0c..f7cd86680 100644
--- a/spring-batch-samples/src/main/resources/org/springframework/batch/samples/misc/jmx/adhoc-job-launcher-context.xml
+++ b/spring-batch-samples/src/main/resources/org/springframework/batch/samples/misc/jmx/adhoc-job-launcher-context.xml
@@ -43,7 +43,7 @@
-
+
diff --git a/spring-batch-samples/src/main/resources/org/springframework/batch/samples/restart/stop/stopRestartSample.xml b/spring-batch-samples/src/main/resources/org/springframework/batch/samples/restart/stop/stopRestartSample.xml
index 5b4e1aeae..d222c7152 100644
--- a/spring-batch-samples/src/main/resources/org/springframework/batch/samples/restart/stop/stopRestartSample.xml
+++ b/spring-batch-samples/src/main/resources/org/springframework/batch/samples/restart/stop/stopRestartSample.xml
@@ -14,7 +14,7 @@
p:dataSource-ref="dataSource" p:transactionManager-ref="transactionManager"/>
diff --git a/spring-batch-samples/src/main/resources/org/springframework/batch/samples/skip/job/skipSample-job-launcher-context.xml b/spring-batch-samples/src/main/resources/org/springframework/batch/samples/skip/job/skipSample-job-launcher-context.xml
index 89e43c035..58a60aaaf 100644
--- a/spring-batch-samples/src/main/resources/org/springframework/batch/samples/skip/job/skipSample-job-launcher-context.xml
+++ b/spring-batch-samples/src/main/resources/org/springframework/batch/samples/skip/job/skipSample-job-launcher-context.xml
@@ -9,7 +9,7 @@
-