java 板


LINE

大家好 目前在使用 spring MVC, 想做一个功能,但是遇到一些奇妙的问题,虽然最後有解 但仍觉得怪怪的 问题描述有点长,所以我尽量长话短说。 要做的功能是,能够知道所有 requestMapping 的 URL !! 大致上就是有一个页面可以去 观看哪一个 URL 会对应到 哪个 controller 的哪一个 method 查到的解答如下 http://ppt.cc/LzT4 http://ppt.cc/DQig 问题来了,当我仿照产生一个 controller,启动时却出现错误 错误简单讯息如下 No qualifying bean of type [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. 我对於讯息的理解是,从spring的context找不到RequestMappingHandlerMapping 这个 type 於是我又写了一个页面去检查目前spring context所有的 bean 程式码大致如下 https://gist.github.com/frank780117/e65f2b986adc3119a838 所查出来的结果页面图 http://i.imgur.com/PzHuH3v.png 的确是有 RequestMappingHandlerMapping 这一个 bean... class type 也的确是 RequestMappingHandlerMapping.class 比较值得注意的是bean 名称後面有加上 #0 查了一下是说如果 同一个 bean type有多个的话,就会在後面编号 #0 , #1 这样 在其他重复的bean我的确有看到 #0, #1 不过 RequestMappingHandlerMapping 只有 #0 ....? 找不到其他的 RequestMappingHandlerMapping#1 之类的 可能是我的程式码 @Autowire List<ApplicationContext> appContext; 并不是全部的ApplicationContext ? 回到最原始的问题,为什麽用 @Autowire RequestMappingHandlerMapping 会取不到 ? 我从 context 的却找得到这个 bean, 如果 RequestMappingHandlerMapping 是多个的话 我的 @Autowire List<> 也会失败... 最後功能我是做出来了,不过是从 appContext 自己抓出 RequestMappingHandlerMapping 来做处理 结果图如下 http://i.imgur.com/vAWuAeV.png 不过我还是非常困扰 为什麽 @Autowire 会唯独取不到 RequestMappingHandlerMapping 我取其他的 dependcy 就很正常... 不知道是哪一个观念搞错了... 另外我很确定 @Autowire List<ApplicationContext> appContext; 并不会得到全部的 Context,至於为什麽我也不晓得 最後其实网路上也有查到相同问题 http://ppt.cc/8uxd 二楼回答,三楼就解了,不过英文太差不了解二楼再说什麽... 感谢大家帮忙了 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.218.64.133
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1407836692.A.FEF.html ※ 编辑: cyclone350 (61.218.64.133), 08/12/2014 17:52:07 ※ 编辑: cyclone350 (61.218.64.133), 08/12/2014 17:54:34 ※ 编辑: cyclone350 (61.218.64.133), 08/12/2014 17:55:41
1F:→ phstudy: 有机会看到servlet-context.xml跟root-context.xml吗? 08/12 18:26
2F:→ ssccg: 大概是RequestMappingHandlerMapping是在servlet-context 08/12 18:30
3F:→ ssccg: 才生出来的,但是你的root-context scan的时候就尝试建立 08/12 18:31
4F:→ ssccg: 你的controller所以找不到? 08/12 18:31
5F:推 yyc1217: 你可以把log level设为info,看看spring在启动时的顺序 08/12 21:04
6F:→ yyc1217: 不过我一直以为ApplicationContext只有一个耶... 08/12 21:04
7F:推 yyc1217: 然後需要你的设定档,不然也只是在这里瞎猜而已 08/12 21:12
感谢提点,因为电脑放在遥远的彼方,隔天才能提供设定档 不过我可以描述设定档是如何设定的 首先如 phstudy 大说的,我的context有两个, 分别为 servlet-context 跟 root-context servlet-context 主要为 mvc 的设定如 <mvc:annotation-driven /> 或 <mvc:view-controller value="/css" /> 其中对 controller 取得是用 <bean:component-scan="base-package"> 另外 root-context 包含其他所有设定如 dao, service, 连接资料库等等 取得 bean 是用 <bean:component-scan="base-package"> 两个 context 用的 component-scan 是同一个 package (都用根package,因为spring会递回搜寻并创建bean) p大跟s大讲法我有点头绪了 我一直以为context是没有顺序性的... 我在使用 <import> 之类的设定也没考虑到顺序 以为他分成两个context只是分好玩的 XD 另外一问 我使用 @Autowire List<ApplicationContext> 得到的只有一部分的 context,并非全部 想请问这样的取法有甚麽问题吗? 因为跟网路教学的方式并不一样 google到的方法:http://ppt.cc/bpCa 最後提一下 今天发问前有试过删除 root-context或servlet-context 的 component-scan 因为有查到说 component-scan两次,会产生两次bean??? 不过我从 applicationContext 里面检查却只有产生一个 然後修改结果错误仍一样,不过也可能是我漏掉了甚麽 明天有碰电脑再试试看 ※ 编辑: cyclone350 (123.193.192.133), 08/12/2014 22:12:01
8F:推 yyc1217: 这样的话就是第一次scan时要exclude @Controller 08/12 22:54
9F:→ yyc1217: 第二次再针对base-package=你的controller package 08/12 22:55
10F:推 yyc1217: 或是include @Controller 08/12 23:30
11F:→ yyc1217: 印象中spring好像是先找bean,才做url mapping 08/12 23:31
12F:→ yyc1217: 所以autowired的当下才没有东西,但启动後却在context有 08/12 23:35
已经解了 的确是 root-context 跟 servlet-context 顺序问题 我在 root-context scan exclude @Controller servlet-context scan include @Controller 启动时就找得到了 感谢大家帮忙 ※ 编辑: cyclone350 (61.218.64.133), 08/13/2014 09:39:19







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP