0

I have the following applicationContext.xml file:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> <bean class="com.app.config.AppConfig"></bean> </beans> 

And the following config class:

package com.app.config; @Configuration @ComponentScan("com.app") public class AppConfig { // actual beans definition @Bean ... @Bean ... @Bean ... } 

But if I run the app then Spring will not load the AppConfig cause I get NullPointerExceptions on @Autowired dependencies. So it is like Spring doesn't load the JavaConfig @Bean definitions inside the AppConfig class but treats the class as a simple @Component and not a @Configuration component which can in turn contain bean definitions.

Everything works only when I add the <context:component-scan> definition inside the applicationContext.xml instead of the @ComponentScan annotation inside AppConfig, like this:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> <bean class="com.app.config.AppConfig"></bean> <context:component-scan base-package="com.app" /> </beans> 

And AppConfig becomes simply:

package com.app.config; @Configuration // no more @ComponentScan (it's inside applicationContext.xml) public class AppConfig { // actual beans definition @Bean ... @Bean ... @Bean ... } 

Now, why does Spring doesn't see the @Configuration annotation when it loads the AppConfig bean from applicationContext.xml if applicationContext.xml doesn't have <context:component-scan>?

1 Answer 1

4

I guess you are missing annotation-config in your xml. Include the below in your appcontext.xml. This is required to process your annotation. Thanks.

<context:annotation-config/> 
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, it was the missing thing!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.