0

我有一个如下所示的界面

   public interface UserManager {

      void insertUser(User user);
   .......

现在我有一个实现类如下

@Service
public class UserManagerImpl implements UserManager {

    @Autowired
    private UserDAO userDAO;

在我的控制器中

@Controller
public class ExampleGizmoController {

    @Autowired
    private UserManager userManager;

UserDAOImpl 是

@Service
public class UserDAOImpl implements UserDAO {

    @Autowired
    private SessionFactory sessionFactory;

我的 application-context.xml

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

它扫描我所有的包。我已经将它部署为war文件,当部署发生时,userManager属性没有自动连接到ExampleGizmoController,并在tomcat中显示错误,如下所示

Spring-MVC threw load() exception: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [com.foo.UserManager] found for dependency: expected at least 1 bean
which qualifies as autowire candidate for this dependency. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true)}

我能够确定自动装配没有发生,即使它是注释驱动的并且组件扫描已打开。为了自动装配工作,我还应该做些什么吗?

4

4 回答 4

1
 <mvc:annotation-driven/>

您的配置文件中也需要

于 2013-04-10T12:51:25.193 回答
0

也许这很愚蠢......但尝试从 UserManager Impl 中删除实现 UserManager ..

于 2013-04-10T13:29:39.327 回答
0

你应该使用@Service("userManager"). 它是一种告诉 Spring 你想UserManagerImpl用“userManager”命名你的 bean 实例的方法。

于 2013-04-10T14:45:35.463 回答
0

我遇到了同样的错误,但我还有一个检索用户管理器信息的 dao 类。您应该将 @Repository 注释添加到 dao 类。你的另一个道类看起来是这样的;

@Repository("userManagerDao")
public class UserManagerDAOImpl implements UserManagerDao{
    public UserManagerDTO createNewUserManager() {
        UserManagerDTO userManager = new UserManagerDTO();
        userManager.setId(1);
        userManager.setFirstName("First Name");
        userManager.setLastName("Last Name");
        return userManager;
    }
}
于 2017-01-16T13:17:07.503 回答