大家好
目前在使用 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
二樓回答,三樓就解了,不過英文太差不瞭解二樓再說什麼...
感謝大家幫忙了