我正在构建一个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