1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.batch.core.configuration.annotation;
17
18 import org.springframework.context.annotation.ImportSelector;
19 import org.springframework.core.annotation.AnnotationAttributes;
20 import org.springframework.core.type.AnnotationMetadata;
21 import org.springframework.util.Assert;
22
23
24
25
26
27
28
29
30
31 public class BatchConfigurationSelector implements ImportSelector {
32
33 @Override
34 public String[] selectImports(AnnotationMetadata importingClassMetadata) {
35 Class<?> annotationType = EnableBatchProcessing.class;
36 AnnotationAttributes attributes = AnnotationAttributes.fromMap(importingClassMetadata.getAnnotationAttributes(
37 annotationType.getName(), false));
38 Assert.notNull(attributes, String.format("@%s is not present on importing class '%s' as expected",
39 annotationType.getSimpleName(), importingClassMetadata.getClassName()));
40
41 String[] imports;
42 if (attributes.containsKey("modular") && attributes.getBoolean("modular")) {
43 imports = new String[] { ModularBatchConfiguration.class.getName() };
44 }
45 else {
46 imports = new String[] { SimpleBatchConfiguration.class.getName() };
47 }
48
49 return imports;
50 }
51
52 }