Skip to content

Commit 2b258d1

Browse files
committed
Change the default execution context serializer to DefaultExecutionContextSerializer
This commit changes the default execution context serializer to DefaultExecutionContextSerializer, which makes Jackson an optional dependency. Resolves #4140
1 parent c65e0f2 commit 2b258d1

File tree

11 files changed

+35
-26
lines changed

11 files changed

+35
-26
lines changed

spring-batch-core/pom.xml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,6 @@
5050
<artifactId>spring-jdbc</artifactId>
5151
<version>${spring-framework.version}</version>
5252
</dependency>
53-
<dependency>
54-
<groupId>com.fasterxml.jackson.core</groupId>
55-
<artifactId>jackson-databind</artifactId>
56-
<version>${jackson.version}</version>
57-
</dependency>
5853
<dependency>
5954
<groupId>io.micrometer</groupId>
6055
<artifactId>micrometer-core</artifactId>
@@ -67,6 +62,12 @@
6762
</dependency>
6863

6964
<!-- optional production dependencies -->
65+
<dependency>
66+
<groupId>com.fasterxml.jackson.core</groupId>
67+
<artifactId>jackson-databind</artifactId>
68+
<version>${jackson.version}</version>
69+
<optional>true</optional>
70+
</dependency>
7071
<dependency>
7172
<groupId>jakarta.annotation</groupId>
7273
<artifactId>jakarta.annotation-api</artifactId>

spring-batch-core/src/main/java/org/springframework/batch/core/configuration/support/DefaultBatchConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.springframework.batch.core.repository.ExecutionContextSerializer;
3434
import org.springframework.batch.core.repository.JobRepository;
3535
import org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao;
36-
import org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer;
36+
import org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer;
3737
import org.springframework.batch.core.repository.dao.JdbcExecutionContextDao;
3838
import org.springframework.batch.core.repository.dao.JdbcJobExecutionDao;
3939
import org.springframework.batch.core.repository.dao.JdbcStepExecutionDao;
@@ -299,11 +299,11 @@ protected JdbcOperations getJdbcOperations() {
299299

300300
/**
301301
* A custom implementation of the {@link ExecutionContextSerializer}. The default, if
302-
* not injected, is the {@link Jackson2ExecutionContextStringSerializer}.
302+
* not injected, is the {@link DefaultExecutionContextSerializer}.
303303
* @return the serializer to use to serialize/deserialize the execution context
304304
*/
305305
protected ExecutionContextSerializer getExecutionContextSerializer() {
306-
return new Jackson2ExecutionContextStringSerializer();
306+
return new DefaultExecutionContextSerializer();
307307
}
308308

309309
/**

spring-batch-core/src/main/java/org/springframework/batch/core/explore/support/JobExplorerFactoryBean.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import org.springframework.batch.core.explore.JobExplorer;
2525
import org.springframework.batch.core.repository.ExecutionContextSerializer;
2626
import org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao;
27+
import org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer;
2728
import org.springframework.batch.core.repository.dao.ExecutionContextDao;
28-
import org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer;
2929
import org.springframework.batch.core.repository.dao.JdbcExecutionContextDao;
3030
import org.springframework.batch.core.repository.dao.JdbcJobExecutionDao;
3131
import org.springframework.batch.core.repository.dao.JdbcJobInstanceDao;
@@ -80,7 +80,7 @@ protected long getNextKey() {
8080

8181
/**
8282
* A custom implementation of {@link ExecutionContextSerializer}. The default, if not
83-
* injected, is the {@link Jackson2ExecutionContextStringSerializer}.
83+
* injected, is the {@link DefaultExecutionContextSerializer}.
8484
* @param serializer The serializer used to serialize or deserialize an
8585
* {@link org.springframework.batch.item.ExecutionContext}.
8686
* @see ExecutionContextSerializer
@@ -160,7 +160,7 @@ public void afterPropertiesSet() throws Exception {
160160
}
161161

162162
if (serializer == null) {
163-
serializer = new Jackson2ExecutionContextStringSerializer();
163+
serializer = new DefaultExecutionContextSerializer();
164164
}
165165

166166
if (this.conversionService == null) {

spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcExecutionContextDao.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
9191

9292
private LobHandler lobHandler = new DefaultLobHandler();
9393

94-
private ExecutionContextSerializer serializer;
94+
private ExecutionContextSerializer serializer = new DefaultExecutionContextSerializer();
9595

9696
/**
9797
* Setter for {@link Serializer} implementation

spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBean.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727

2828
import org.springframework.batch.core.repository.ExecutionContextSerializer;
2929
import org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao;
30+
import org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer;
3031
import org.springframework.batch.core.repository.dao.ExecutionContextDao;
31-
import org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer;
3232
import org.springframework.batch.core.repository.dao.JdbcExecutionContextDao;
3333
import org.springframework.batch.core.repository.dao.JdbcJobExecutionDao;
3434
import org.springframework.batch.core.repository.dao.JdbcJobInstanceDao;
@@ -100,7 +100,7 @@ public void setClobType(int type) {
100100

101101
/**
102102
* A custom implementation of the {@link ExecutionContextSerializer}. The default, if
103-
* not injected, is the {@link Jackson2ExecutionContextStringSerializer}.
103+
* not injected, is the {@link DefaultExecutionContextSerializer}.
104104
* @param serializer used to serialize/deserialize
105105
* {@link org.springframework.batch.item.ExecutionContext}
106106
* @see ExecutionContextSerializer
@@ -221,7 +221,7 @@ public void afterPropertiesSet() throws Exception {
221221
}
222222

223223
if (serializer == null) {
224-
Jackson2ExecutionContextStringSerializer defaultSerializer = new Jackson2ExecutionContextStringSerializer();
224+
DefaultExecutionContextSerializer defaultSerializer = new DefaultExecutionContextSerializer();
225225

226226
serializer = defaultSerializer;
227227
}

spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/JdbcExecutionContextDaoTests.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,6 @@
2727
@SpringJUnitConfig(locations = { "sql-dao-test.xml" })
2828
class JdbcExecutionContextDaoTests extends AbstractExecutionContextDaoTests {
2929

30-
@Test
31-
void testNoSerializer() {
32-
JdbcExecutionContextDao jdbcExecutionContextDao = new JdbcExecutionContextDao();
33-
jdbcExecutionContextDao.setJdbcTemplate(mock(JdbcOperations.class));
34-
Exception exception = assertThrows(IllegalStateException.class, jdbcExecutionContextDao::afterPropertiesSet);
35-
assertEquals("ExecutionContextSerializer is required", exception.getMessage());
36-
}
37-
3830
@Test
3931
void testNullSerializer() {
4032
JdbcExecutionContextDao jdbcExecutionContextDao = new JdbcExecutionContextDao();

spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBeanTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.springframework.batch.core.repository.ExecutionContextSerializer;
3535
import org.springframework.batch.core.repository.JobRepository;
3636
import org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer;
37-
import org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer;
3837
import org.springframework.batch.item.database.support.DataFieldMaxValueIncrementerFactory;
3938
import org.springframework.core.serializer.Serializer;
4039
import org.springframework.dao.DataAccessException;
@@ -172,7 +171,7 @@ void tesDefaultSerializer() throws Exception {
172171
factory.afterPropertiesSet();
173172
Serializer<Map<String, Object>> serializer = (Serializer<Map<String, Object>>) ReflectionTestUtils
174173
.getField(factory, "serializer");
175-
assertTrue(serializer instanceof Jackson2ExecutionContextStringSerializer);
174+
assertTrue(serializer instanceof DefaultExecutionContextSerializer);
176175
}
177176

178177
@Test

spring-batch-core/src/test/resources/org/springframework/batch/core/repository/dao/sql-dao-test.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@
3535
<constructor-arg ref="dataSource" />
3636
</bean>
3737

38-
<bean id="serializer" class="org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer"/>
38+
<bean id="serializer" class="org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer"/>
3939
</beans>

spring-batch-infrastructure/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,12 @@
9595
<version>${gson.version}</version>
9696
<optional>true</optional>
9797
</dependency>
98+
<dependency>
99+
<groupId>com.fasterxml.jackson.core</groupId>
100+
<artifactId>jackson-databind</artifactId>
101+
<version>${jackson.version}</version>
102+
<optional>true</optional>
103+
</dependency>
98104
<dependency>
99105
<groupId>org.hibernate.orm</groupId>
100106
<artifactId>hibernate-core</artifactId>

spring-batch-integration/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@
8080
<version>${spring-integration.version}</version>
8181
<scope>test</scope>
8282
</dependency>
83+
<dependency>
84+
<groupId>com.fasterxml.jackson.core</groupId>
85+
<artifactId>jackson-databind</artifactId>
86+
<version>${jackson.version}</version>
87+
<scope>test</scope>
88+
</dependency>
8389
<dependency>
8490
<groupId>org.apache.commons</groupId>
8591
<artifactId>commons-dbcp2</artifactId>

spring-batch-samples/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,11 @@
151151
<artifactId>simpleclient_pushgateway</artifactId>
152152
<version>${prometheus_pushgateway.version}</version>
153153
</dependency>
154+
<dependency>
155+
<groupId>com.fasterxml.jackson.core</groupId>
156+
<artifactId>jackson-databind</artifactId>
157+
<version>${jackson.version}</version>
158+
</dependency>
154159

155160
<!-- test dependencies -->
156161
<dependency>

0 commit comments

Comments
 (0)