component-scan无法找到所有类

时间:2013-11-20 04:20:45

标签: maven spring-mvc spring-annotations

我有一个简单的mavenized Spring 3.1 MVC应用程序,它在Tomcat 6.0服务器上运行Eclipse。

我的控制器正在自动装配DAO,如下所示

@Autowired
private UserDAO userDAO;

@Component
public class UserDAO extends NamedParameterJdbcDaoSupport implements UserDetailsService {....}

我的spring上下文文件中有<mvc:annotation-driven />。一切顺利。现在,我做了一个用户管理器的ctrl + c + ctrl + p(复制粘贴)。我保留了CopyOfUserDAO这个名字。我将Controller中的私有类更改为CopyOfUserDAO。当我启动tomcat时,它无法找到CopyOfUserDAO bean。我做了各种清理但是找不到CopyOfUserDAO。我甚至从头开始创建了一个新类并更新了控制器,但它无法找到它。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

如果检查新dao类的名称和包,并且发现一切正常,那么在编译dao或project的项目包之后检查以包含新类。之后尝试清理tomcat缓存。停止并开始tomcat。如果您部署war文件检查war文件是否存在新的dao文件,如果可以,请尝试将其手动复制到webapp文件夹。

答案 1 :(得分:0)

@Component
public class UserDAO extends NamedParameterJdbcDaoSupport 
                  implements UserDetailsService {....}

我无法理解你在做什么,为什么你要从dao层实现一个服务类。 如果yoy想要为dao创建对象,那么使用@Repository注释或使用服务意味着使用@Service注释

答案 2 :(得分:0)

我想出了我的问题。我忘了添加'上下文:组件扫描'!!我在我的应用程序上下文中手动声明了UserDAO,因此它被发现/实例化了。

所以,除了

<mvc:annotation-driven />

我们需要添加

<context:component-scan base-package="package where classes are declared.">

我花了周期追逐maven问题。这个问题与Maven完全无关。