diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java
index 2ba1277d2..1f505a918 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java
@@ -177,7 +177,7 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I
BeanWrapper wrapper = new BeanWrapperImpl(contextFactory.getContext());
if (wrapper.isReadableProperty(key)) {
Object property = wrapper.getPropertyValue(key);
- if (requiredType.isAssignableFrom(property.getClass())) {
+ if (property==null || requiredType.isAssignableFrom(property.getClass())) {
result = property;
}
}
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests.java
index d04be4dcf..88400f186 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests.java
@@ -38,6 +38,10 @@ public class PlaceholderTargetSourceTests extends ContextFactorySupport {
@Qualifier("withDate")
private PlaceholderTargetSource withDate;
+ @Autowired
+ @Qualifier("withNull")
+ private PlaceholderTargetSource withNull;
+
@Autowired
@Qualifier("compound")
private PlaceholderTargetSource compound;
@@ -82,6 +86,10 @@ public class PlaceholderTargetSourceTests extends ContextFactorySupport {
return date;
}
+ public String getGarbage() {
+ return null;
+ }
+
@Test
public void testAfterPropertiesSet() throws Exception {
PlaceholderTargetSource targetSource = new PlaceholderTargetSource();
@@ -143,6 +151,13 @@ public class PlaceholderTargetSourceTests extends ContextFactorySupport {
assertEquals("bar-#{date}", target.getName());
}
+ @Test
+ public void testGetNull() {
+ Node target = (Node) withNull.getTarget();
+ // Remains unconverted because null is explicitly excluded
+ assertEquals("bar-#{garbage}", target.getName());
+ }
+
public static interface Node {
String getName();
diff --git a/spring-batch-core/src/test/resources/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests-context.xml b/spring-batch-core/src/test/resources/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests-context.xml
index 79d0b987a..6d0750d7b 100644
--- a/spring-batch-core/src/test/resources/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests-context.xml
+++ b/spring-batch-core/src/test/resources/org/springframework/batch/core/scope/util/PlaceholderTargetSourceTests-context.xml
@@ -104,6 +104,18 @@
+
+
+
+
+
+
+
+
+