2626import  org .springframework .beans .BeanUtils ;
2727import  org .springframework .beans .factory .BeanDefinitionStoreException ;
2828import  org .springframework .beans .factory .groovy .GroovyBeanDefinitionReader ;
29+ import  org .springframework .beans .factory .support .AbstractBeanDefinitionReader ;
2930import  org .springframework .beans .factory .support .BeanDefinitionReader ;
3031import  org .springframework .beans .factory .support .BeanDefinitionRegistry ;
3132import  org .springframework .beans .factory .support .BeanNameGenerator ;
3233import  org .springframework .beans .factory .xml .XmlBeanDefinitionReader ;
3334import  org .springframework .context .annotation .AnnotatedBeanDefinitionReader ;
3435import  org .springframework .context .annotation .ClassPathBeanDefinitionScanner ;
36+ import  org .springframework .core .SpringProperties ;
3537import  org .springframework .core .env .ConfigurableEnvironment ;
3638import  org .springframework .core .io .ClassPathResource ;
3739import  org .springframework .core .io .Resource ;
5355 * 
5456 * @author Phillip Webb 
5557 * @author Vladislav Kisel 
58+  * @author Sebastien Deleuze 
5659 * @see #setBeanNameGenerator(BeanNameGenerator) 
5760 */ 
5861class  BeanDefinitionLoader  {
5962
63+ 	// Static final field to facilitate code removal by Graal 
64+ 	private  static  final  boolean  XML_ENABLED  = !SpringProperties .getFlag ("spring.xml.ignore" );
65+ 
6066	private  final  Object [] sources ;
6167
6268	private  final  AnnotatedBeanDefinitionReader  annotatedReader ;
6369
64- 	private  final  XmlBeanDefinitionReader  xmlReader ;
70+ 	private  final  AbstractBeanDefinitionReader  xmlReader ;
6571
66- 	private  BeanDefinitionReader  groovyReader ;
72+ 	private  final   BeanDefinitionReader  groovyReader ;
6773
6874	private  final  ClassPathBeanDefinitionScanner  scanner ;
6975
@@ -80,10 +86,8 @@ class BeanDefinitionLoader {
8086		Assert .notEmpty (sources , "Sources must not be empty" );
8187		this .sources  = sources ;
8288		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 );
8791		this .scanner  = new  ClassPathBeanDefinitionScanner (registry );
8892		this .scanner .addExcludeFilter (new  ClassExcludeFilter (sources ));
8993	}
@@ -94,8 +98,10 @@ class BeanDefinitionLoader {
9498	 */ 
9599	void  setBeanNameGenerator (BeanNameGenerator  beanNameGenerator ) {
96100		this .annotatedReader .setBeanNameGenerator (beanNameGenerator );
97- 		this .xmlReader .setBeanNameGenerator (beanNameGenerator );
98101		this .scanner .setBeanNameGenerator (beanNameGenerator );
102+ 		if  (this .xmlReader  != null ) {
103+ 			this .xmlReader .setBeanNameGenerator (beanNameGenerator );
104+ 		}
99105	}
100106
101107	/** 
@@ -104,8 +110,10 @@ void setBeanNameGenerator(BeanNameGenerator beanNameGenerator) {
104110	 */ 
105111	void  setResourceLoader (ResourceLoader  resourceLoader ) {
106112		this .resourceLoader  = resourceLoader ;
107- 		this .xmlReader .setResourceLoader (resourceLoader );
108113		this .scanner .setResourceLoader (resourceLoader );
114+ 		if  (this .xmlReader  != null ) {
115+ 			this .xmlReader .setResourceLoader (resourceLoader );
116+ 		}
109117	}
110118
111119	/** 
@@ -114,8 +122,10 @@ void setResourceLoader(ResourceLoader resourceLoader) {
114122	 */ 
115123	void  setEnvironment (ConfigurableEnvironment  environment ) {
116124		this .annotatedReader .setEnvironment (environment );
117- 		this .xmlReader .setEnvironment (environment );
118125		this .scanner .setEnvironment (environment );
126+ 		if  (this .xmlReader  != null ) {
127+ 			this .xmlReader .setEnvironment (environment );
128+ 		}
119129	}
120130
121131	/** 
@@ -167,6 +177,9 @@ private void load(Resource source) {
167177			this .groovyReader .loadBeanDefinitions (source );
168178		}
169179		else  {
180+ 			if  (this .xmlReader  == null ) {
181+ 				throw  new  BeanDefinitionStoreException ("Cannot load XML bean definitions when XML support is disabled" );
182+ 			}
170183			this .xmlReader .loadBeanDefinitions (source );
171184		}
172185	}
0 commit comments