我遇到了一个非常烦人的问题...我没有定义 Controller 处理程序映射器,因此我使用 DefaultAnnotationHandlerMapping
类。我的问题似乎与 Controller bean 名称映射到 Controller 类有关,例如
对调度程序的传入请求 ->index.htm
具有以下 Controller 类:
@Controller
public class IndexController {
@RequestMapping(value = "/index.htm", method = RequestMethod.GET)
public String loginForm(ModelMap model) {
return "index";
}
}
应该将index.htm映射到indexController bean,然后映射到IndexController类。我可以从日志中看到 Spring 已将 bean 注册到容器中,但是出现以下错误:
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [xxx.controller.IndexController]
我确信该类存在(因为 bean 名称是从它派生的)。
奇怪的是,如果我将 Controller 命名为与 bean 名称相同的名称(例如indexController),一切都很好! (显然我不希望我的类有小写首字母!!)
请注意,我在我的dispatcher-servlet.xml中使用了以下内容:
<mvc:annotation-driven />
<context:component-scan base-package="xxx" />
J爱
最佳答案
此错误通常意味着您的类尚未捆绑在 war 文件中。解压 war 文件并检查您的类是否正确包含。</p>
我怀疑您在某个时候成功捆绑了“indexController.class”,但之前的打包尝试失败了。您尚未说明如何打包应用程序,如果您正在使用其中之一,请检查您的 Maven/Ant 配置。请注意 IDE 和构建脚本之间共享构建目录,因为它们有时会相互冲突。
关于java - 找不到 Spring MVC 带注释的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15431194/