вот моя проблема: я работаю с SpringMVC и получаю исключение NullPointerException при вызове зависимости @Autowired.
Вот @Service:
package x.y.z.service @Repository("myService") public class MyServiceImpl implements MyService { /* ... */ }
Сервис подключается везде в приложении без проблем, кроме здесь:
package x.y.z.utils @Component public class TestClass { @Autowired private MyService myService; public TestClass() { super(); } public void tester() { myService.find(1); } }
, где метод tester() создает исключение NP на myService. При трассировке журналов я вижу, что bean управляется Spring.
tester()
myService
Файл контекста приложения довольно прост:
<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xsi:schemaLocation=" http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <annotation-driven /> <interceptors> <!-- ... --> </interceptors> <resources mapping="/resources/**" location="/resources/" /> <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value=".jsp" /> </beans:bean> <!-- Imports user-defined @Controller beans that process client requests --> <beans:import resource="controllers.xml" /> <beans:bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> </beans:beans>
И ссылка на controllers.xml
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- Scans within the base package of the application for @Components to configure as beans --> <context:component-scan base-package="x.y.z" /> <context:annotation-config /> </beans>
После двухдневного поиска я не могу найти ничего полезного. Я что-то упустил?
Thx
Пожалуйста, убедитесь, что у вас есть
<context:component-scan base-package="x.y.z"/>
Кроме того, пожалуйста, добавьте:
<context:annotation-config/>
Обновление:
Яизвините, но ваш xml неверен с точки зрения схемы, и в нем отсутствует то, что я сказал вам добавить:
Вот как должен выглядеть ваш файл:
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <context:annotation-config /> <context:component-scan base-package="x.y.z"></context:component-scan> </beans>