2015-01-13 3 views
2

Моей компоненты:Spring MVC Autowired нуль в компоненте

package com.netpc.recruitment.models.user; 
@Component 
public class UserAuth { 
    @Autowired 
    private HttpSession httpSession; 

    @Autowired 
    private IUserDAO userDAO; 
} 

Варс httpSession и userDAO, при создании объекта в контроллерах, является null. userDAO настроен правильно, и он отлично работает в моем com.netpc.recruitment.controllers.IndexController классе @Controller.

Мой web.xml

<beans ......> 
    <context:component-scan base-package="com.netpc.recruitment.controllers" /> 
    <bean id="userDAO" class="com.netpc.recruitment.models.user.JDBCUserDAO"> 
     <property name="dataSource" ref="dataSource" /> 
    </bean> 
</beans> 

Что случилось с ним? Почему это null?

+0

Вы сканировали для компонентов пакет, в котором находится 'UserAuth'? – beerbajay

+3

** при создании объекта в контроллерах **. Ну, конечно, они ноль, вы сами создаете новые экземпляры, а не позволяете контейнеру Spring использовать его. Также инъекция «HttpSession» кажется мне немного взломанной. –

+0

попытался сделать '<контекст: компонент-сканирование base-package =" com.netpc.recruitment.controllers, com.netpc.recruitment.models "/>' - не повезло – ovnia

ответ

2

Сканирование вашего компонента сканируется только на "com.netpc.recruitment.controllers". Следует также сканировать в пакете com.netpc.recruitment.models.user. Изменения в web.xml:

<context:component-scan base-package="com.netpc.recruitment.controllers" /> 

к этому:

<context:component-scan base-package="com.netpc.recruitment.controllers, com.netpc.recruitment.models.user" /> 

Надеется, что это работает для Вас!

+0

Также classnames: Попробуйте использовать JDBCUserDAO userDAO; вместо IUserDAO userDAO, только для тестирования –

+0

И где определяется ваш HttpSession? –

+0

не работает. HttpSession - это javax.servlet.http.HttpSession нет разницы, чтобы назвать. – ovnia