Java 找不到bean定义,我也应该注释接口吗?
我有一个如下所示的界面Java 找不到bean定义,我也应该注释接口吗?,java,spring,spring-mvc,spring-3,Java,Spring,Spring Mvc,Spring 3,我有一个如下所示的界面 public interface UserManager { void insertUser(User user); ....... 现在我有一个实现类,如下所示 @Service public class UserManagerImpl implements UserManager { @Autowired private UserDAO userDAO; 在我的控制器中 @Controller public class
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;
我的应用程序-context.xml
<context:annotation-config/>
<context:component-scan base-package="com.foo" />
我能够确定自动布线没有发生,即使它是注释驱动的,并且组件扫描已打开。要使自动布线正常工作,我还需要做些什么吗?
<mvc:annotation-driven/>
在您的配置文件中也是必需的也许这很愚蠢。。。但请尝试从UserManager Impl中删除implements UserManager 您应该使用
@Service(“userManager”)
。这是告诉Spring您想用“userManager”命名您的UserManagerImpl
bean实例的一种方式。与我遇到的错误相同,但我还有一个dao类用于检索用户管理器的信息。您应该向dao类添加@Repository注释。
你的另一个刀类是这样的
@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;
}
}
所有的类都在com.foo包中吗?是的,所有的类都在com.foo包中,所以组件扫描工作正常。那么
UserDAO
呢?你有这个接口的正确实现吗?@PetrMensik是的,我在问题中添加了UserDAOImpl类片段。我在谷歌搜索中发现,您需要用相应的角色为类添加注释,但我已经在这样做了。我已经用@Component为UserManager添加了注释。自动连线仍然没有发生。它和bean自动连线有什么关系吗?是MVC的,对吗?我也添加了,但没有在这里发布。还是一样的例外。如果你有,一切看起来都很好,你确定一切都是com.foo吗?你的日志上还有其他内容吗?是的,它的com.foo,日志指向同一个东西“NoSuchBeanDefinitionException”,我会试试,然后告诉你。
@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;
}
}