Spring boot - 控制器捕获所有URL

时间:2014-10-29 14:55:46

标签: java spring spring-mvc spring-boot

我正在构建一个Spring启动Web应用程序,并使用注释进行控制器/网址映射。

我有几个用@RequestMapping注释的控制器,其中设置了url值(空字符串和特定的URL),这些控制器正常工作,例如。

@Controller
@RequestMapping("/accounts")
class SignInController {

    @Autowired PartyService partyService

    @RequestMapping(value="", method = RequestMethod.GET )
    public String signinPage( Model model) {

导航到/ accounts会正确呈现登录页面。

但是,如果我添加一个没有RequestMapping值的控制器,例如

@Controller
class CustomController {

    @RequestMapping
    public String transform( Model model ) {

然后我输入的任何与任何其他特定控制器都不匹配的URL将由此控制器处理(因此我希望404所有页面都只是提交此页面)。这是预期的行为吗?我没想到这一点,因为RequestMapping值默认为空并且是一个antMatcher,我不会认为它会处理所有其他URL。

我将此控制器定义为RequestMapping的原因是因为我还希望定义SimpleUrlMappingHandler一些显式URL到该控制器,如果我不包含@Controller 1}}& @RequestMapping对该控制器的注释然后我得到一个关于无法找到处理程序方法的错误(可能问题是我错误地理解了它的实现细节)。

我的自定义控制器应该处理所有网址吗?如果是这样,有什么我可以做的,所以它没有,只被调用我已定义的显式SimpleUrlMappingHandler

1 个答案:

答案 0 :(得分:2)

正如评论中所提到的 - 我刚刚从类中删除了@Controller注释,然后在我的配置类中将控制器显式定义为@Bean,并将其明确地分配给{中的映射{1}}配置