自动装配ByType为空。但日志中没有错误

时间:2016-08-28 12:06:59

标签: spring autowired

服务类

 package com.company.service;

 @org.springframework.stereotype.Service
 public class UserWorkflow {
     private Logger logger = Logger.getLogger(UserWorkflow.class)
     @Autowired
     public UserMessageViewDAO MessageViewDAO;
 }    

Dao类

package com.company.dao;

@org.springframework.stereotype.Repository
public class UserMessageViewDAO extends BaseDao{
    public UserMessageViewDAO () {

    }
}
在applicationContexe.xml 中

<context:component-scan base-package="com.company.dao"/>
<context:component-scan base-package="com.company.service"/>
<context:annotation-config/>

@Autowire注释无法正常工作。当在服务类中调用方法时,它将MessageViewDAO的值显示为null。但是,在部署应用程序时,日志中没有错误。 你能帮我找个问题吗?

1 个答案:

答案 0 :(得分:0)

第二个上下文:component-scan会覆盖第一个上下文,这就是不扫描com.company.dao的原因。如果您想使用多个包,请使用以下内容包含它们:

<context:component-scan base-package="com.company.dao, com.company.service" />

或者,简而言之(包扫描是递归的):

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

您可能还想查看: multiple packages in context:component-scan, spring config

编辑2016-09-12:使用@Service和@Repositiory注释。 Annotations @ org..springframework.stereotype。 ......看起来很奇怪。