正确使用spring @Autowired注释

时间:2017-12-09 07:31:14

标签: spring autowired spring-bean

我正在为一个RESTFul API的jax-rs项目工作

我选择使用spring来自动注入我的依赖项

import org.springframework.beans.factory.annotation.Autowired;

@Autowired
private UserManager userManager;

这是我的spring.xml

<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-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <context:annotation-config/>

    <!-- Manager -->
    <bean id="userManager" class="com.mypackage.manager.UserManagerImpl"/>
    <bean id="cardManager" class="com.mypackage.manager.CardManagerImpl"/>
    <bean id="albumManager" class="com.mypackage.manager.AlbumManagerImpl"/>

    <!-- Dao -->
    <bean id="userDao" class="com.mypackage.dao.UserDaoImpl"/>
    <bean id="cardDao" class="com.mypackage.dao.CardDaoImpl"/>

    <!-- Session factory for hibernate -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="configLocation" value="file:web/WEB-INF/hibernate.cfg.xml"/>
    </bean>

</beans>

但是我在这里得到了一个N​​ullPointerException:

userManager.getUserById(1);

以下是该方法的代码:

public UserDto getUserById(Integer userId) throws NotFoundException {
    /*User user = userDao.findById(userId);*/
    User user = new User();
    user.setUsername("creekorful");
    user.setAvatarUrl("myavatar/avatar.image");
    user.setEmail("creekorful@gmail.com");
    user.setUserStatus(UserStatus.ACTIVATED);
    user.setAccountType(AccountType.ADMINISTRATOR);
    return new UserDto(user);
}

我是否需要让spring自动实例化并注入我的经理?因为无论我尝试使用什么解决方案,似乎我的userManager仍为null。我想我错过了春天的功能......

N.B:我已将spring.xml放入我的.war中的WEB-INF / class目录

提前感谢

1 个答案:

答案 0 :(得分:0)

在spring.xml中,您还需要确保启用了这样的注释:

<context:annotation-config/>

希望有所帮助!