@Inject注释一个对象dao给出null

时间:2013-12-22 20:21:59

标签: java spring spring-mvc

尝试在服务文件中注入对象dao时,我得到一个空指针异常。 这是我的代码:

的web.xml:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/applicationContext.xml, classpath:/hibernateContext.xml</param-value>
</context-param>

的applicationContext.xml:

<context:component-scan base-package="com.projects.discussion"/>

AccountController.java:

@Controller
@RequestMapping("/users")
public class AccountController {
    @Autowired
    private AccountService accountService;

    public String postRegistrionForm(...) {
         accountService.registerAccount(...);
    }

AccountServiceImpl.java:

@Service("accountService")
@Transactional(readOnly = true)
public class AccountServiceImpl implements AccountService {

    @Inject
    private UserDAO userDao;

    @Transactional(readOnly = false)
    public boolean registerAccount(User user, Errors errors) {
        ...
        userDao.create(user);
        ...

当涉及AccountService中的registerAccount方法时,在userDao.create()处停止。 UserDao在当下是NULL。为什么呢?
我尝试使用@Autowired而不是@Inject,但它没有帮助我:( 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

不,具有@Autowired@Inject目标的已处理bean无法为该目标注入null值。如果找不到候选bean,Spring将抛出异常。

您必须自己创建对象,或者由Spring以外的其他容器创建。