【问题标题】:Spring MVC Annotated Controller not found找不到 Spring MVC 带注释的控制器
【发布时间】:2013-03-15 11:26:01
【问题描述】:

我遇到了一个非常烦人的问题...我没有定义控制器处理程序映射器,因此我使用的是DefaultAnnotationHandlerMapping 类。我的问题似乎与控制器 bean 名称映射到控制器类有关,例如

对调度程序的传入请求 -> 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 名称是从它派生的)。

奇怪的是,如果我将控制器命名为与 bean 名称相同(例如 indexController),一切都很好! (显然我不希望我的类有一个小写的首字母!!)

请注意,我在 dispatcher-servlet.xml 中使用了以下内容:

<mvc:annotation-driven />
<context:component-scan base-package="xxx" />

爱情

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    这个错误通常意味着你的类没有被捆绑在war文件中。解压缩war文件并检查您的类是否正确包含。

    我怀疑您在某些时候成功捆绑了“indexController.class”,但之前的打包尝试失败了。你还没有说明你是如何打包你的应用程序的,如果你正在使用其中之一,请检查你的 Maven/Ant 配置。请注意在 IDE 和构建脚本之间共享构建目录,因为它们有时会相互冲突。

    【讨论】:

    • 谢谢...我相信问题与 Netbeans 使用的热部署有关。因为我只改变了类名的大小写,我认为它不相信文件已经改变。我清理了我的项目并重新部署,一切都很好!
    【解决方案2】:

    我建议你下载 STS 并创建新的 Spring MVC 项目模板,看看 Spring 3 MVC 是如何工作的。

    【讨论】:

    • 我了解 Spring MVC 使用的原理......我正在寻求具体的帮助。
    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2015-01-15
    • 2012-04-14
    • 2012-06-16
    相关资源
    最近更新 更多