大家好
目前在使用 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
二楼回答,三楼就解了,不过英文太差不了解二楼再说什么...
感谢大家帮忙了