我的界面如下所示
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)}
我能够发现自动装配没有发生,即使它是注释驱动并且组件扫描已打开。我还应该为自动装配工作做些什么吗?
答案 0 :(得分:1)
<mvc:annotation-driven/>
配置文件中还需要
答案 1 :(得分:0)
也许这很愚蠢...但是尝试从UserManager Impl中删除实现UserManager ..
答案 2 :(得分:0)
您应该使用@Service("userManager")
。它告诉Spring你想用“userManager”命名你的UserManagerImpl
bean实例。
答案 3 :(得分:0)
我面临同样的错误,但我还有一个dao类,它检索用户管理器的信息。您应该将@Repository注释添加到dao类。 你的另一个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;
}
}