我正在構建一個Spring引導Web應用程序,並使用控制器/ URL映射的註釋。Spring引導 - 控制器捕獲所有URL
我有幾個控制器用@RequestMapping
進行了註釋,並設置了可正常工作的url值(包括空字符串和特定的URL)。
@Controller
@RequestMapping("/accounts")
class SignInController {
@Autowired PartyService partyService
@RequestMapping(value="", method = RequestMethod.GET)
public String signinPage(Model model) {
導航到/帳戶正確呈現登錄頁面。
但是,如果我添加一個沒有RequestMapping
值的控制器,例如,
@Controller
class CustomController {
@RequestMapping
public String transform(Model model) {
然後我輸入任何網址不符合任何其他特定控制器得到該控制器處理(頁左右我會希望所有404只renderthis頁)。這是預期的行爲?我沒想到會這樣,並且由於RequestMapping值默認爲空,並且是一個antMatcher,我不會認爲它會處理所有其他URL。
我之所以有這個控制器出RequestMapping
定義是因爲我想也有SimpleUrlMappingHandler
有一些明確的網址去那個控制器進行定義,如果我不包括@Controller
& @RequestMapping
註釋到控制器的話,我得到一個關於無法找到處理程序方法的錯誤(也許問題是我誤解了它的實現細節)。
我的自定義控制器是否應該處理所有的URL?如果是這樣,有什麼我可以做,所以它不,只有被調用我已經定義的顯式SimpleUrlMappingHandler
?
如果你想映射一個'SimpleUrlHandlerMapping'然後不使用'@ Controller',因爲這是用於別的。改爲實現這些控制器的'Controller'接口。 – 2014-10-29 15:04:46
好的,將嘗試 - 我的印象是@Controller只是註釋了該類作爲類路徑掃描的「控制器」類型組件(假設沒有,我將需要在配置中顯式定義控制器) - 該控制器是否攔截所有其他網址的預期行爲? – rhinds 2014-10-29 15:07:07
確實如此,然而'RequestMappingHandlerMapping'檢測到所有的'@ Controller'並且試圖找到所有'@ RequestMapping'註解的方法。 – 2014-10-29 15:16:43