我有一个简单的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。我甚至从头开始创建了一个新类并更新了控制器,但它无法找到它。
我做错了什么?
答案 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完全无关。