26
26
import org .springframework .beans .BeanUtils ;
27
27
import org .springframework .beans .factory .BeanDefinitionStoreException ;
28
28
import org .springframework .beans .factory .groovy .GroovyBeanDefinitionReader ;
29
+ import org .springframework .beans .factory .support .AbstractBeanDefinitionReader ;
29
30
import org .springframework .beans .factory .support .BeanDefinitionReader ;
30
31
import org .springframework .beans .factory .support .BeanDefinitionRegistry ;
31
32
import org .springframework .beans .factory .support .BeanNameGenerator ;
32
33
import org .springframework .beans .factory .xml .XmlBeanDefinitionReader ;
33
34
import org .springframework .context .annotation .AnnotatedBeanDefinitionReader ;
34
35
import org .springframework .context .annotation .ClassPathBeanDefinitionScanner ;
36
+ import org .springframework .core .SpringProperties ;
35
37
import org .springframework .core .env .ConfigurableEnvironment ;
36
38
import org .springframework .core .io .ClassPathResource ;
37
39
import org .springframework .core .io .Resource ;
53
55
*
54
56
* @author Phillip Webb
55
57
* @author Vladislav Kisel
58
+ * @author Sebastien Deleuze
56
59
* @see #setBeanNameGenerator(BeanNameGenerator)
57
60
*/
58
61
class BeanDefinitionLoader {
59
62
63
+ // Static final field to facilitate code removal by Graal
64
+ private static final boolean XML_ENABLED = !SpringProperties .getFlag ("spring.xml.ignore" );
65
+
60
66
private final Object [] sources ;
61
67
62
68
private final AnnotatedBeanDefinitionReader annotatedReader ;
63
69
64
- private final XmlBeanDefinitionReader xmlReader ;
70
+ private final AbstractBeanDefinitionReader xmlReader ;
65
71
66
- private BeanDefinitionReader groovyReader ;
72
+ private final BeanDefinitionReader groovyReader ;
67
73
68
74
private final ClassPathBeanDefinitionScanner scanner ;
69
75
@@ -80,10 +86,8 @@ class BeanDefinitionLoader {
80
86
Assert .notEmpty (sources , "Sources must not be empty" );
81
87
this .sources = sources ;
82
88
this .annotatedReader = new AnnotatedBeanDefinitionReader (registry );
83
- this .xmlReader = new XmlBeanDefinitionReader (registry );
84
- if (isGroovyPresent ()) {
85
- this .groovyReader = new GroovyBeanDefinitionReader (registry );
86
- }
89
+ this .xmlReader = (XML_ENABLED ? new XmlBeanDefinitionReader (registry ) : null );
90
+ this .groovyReader = (isGroovyPresent () ? new GroovyBeanDefinitionReader (registry ) : null );
87
91
this .scanner = new ClassPathBeanDefinitionScanner (registry );
88
92
this .scanner .addExcludeFilter (new ClassExcludeFilter (sources ));
89
93
}
@@ -94,8 +98,10 @@ class BeanDefinitionLoader {
94
98
*/
95
99
void setBeanNameGenerator (BeanNameGenerator beanNameGenerator ) {
96
100
this .annotatedReader .setBeanNameGenerator (beanNameGenerator );
97
- this .xmlReader .setBeanNameGenerator (beanNameGenerator );
98
101
this .scanner .setBeanNameGenerator (beanNameGenerator );
102
+ if (this .xmlReader != null ) {
103
+ this .xmlReader .setBeanNameGenerator (beanNameGenerator );
104
+ }
99
105
}
100
106
101
107
/**
@@ -104,8 +110,10 @@ void setBeanNameGenerator(BeanNameGenerator beanNameGenerator) {
104
110
*/
105
111
void setResourceLoader (ResourceLoader resourceLoader ) {
106
112
this .resourceLoader = resourceLoader ;
107
- this .xmlReader .setResourceLoader (resourceLoader );
108
113
this .scanner .setResourceLoader (resourceLoader );
114
+ if (this .xmlReader != null ) {
115
+ this .xmlReader .setResourceLoader (resourceLoader );
116
+ }
109
117
}
110
118
111
119
/**
@@ -114,8 +122,10 @@ void setResourceLoader(ResourceLoader resourceLoader) {
114
122
*/
115
123
void setEnvironment (ConfigurableEnvironment environment ) {
116
124
this .annotatedReader .setEnvironment (environment );
117
- this .xmlReader .setEnvironment (environment );
118
125
this .scanner .setEnvironment (environment );
126
+ if (this .xmlReader != null ) {
127
+ this .xmlReader .setEnvironment (environment );
128
+ }
119
129
}
120
130
121
131
/**
@@ -167,6 +177,9 @@ private void load(Resource source) {
167
177
this .groovyReader .loadBeanDefinitions (source );
168
178
}
169
179
else {
180
+ if (this .xmlReader == null ) {
181
+ throw new BeanDefinitionStoreException ("Cannot load XML bean definitions when XML support is disabled" );
182
+ }
170
183
this .xmlReader .loadBeanDefinitions (source );
171
184
}
172
185
}
0 commit comments