WebMvcConfigurer在春季启动中不起作用?

时间:2019-07-16 13:27:08

标签: spring-boot spring-mvc

我更改了工作正常的控制器类,其目的仅仅是为了实现视图解析,如下所示:

@Controller
public class MyController {

@GetMapping("/signup")
public String signupPage() {
    return "signup";
}

@GetMapping("/login")
public String loginPage() {
    return "login";
}

@GetMapping("/dashboard")
public String dashboardPage() {
    return "dashboard";
}

@GetMapping("/logout")
public String logoutPage() {
    return "redirect:/";
}
}

到扩展WebMvcConfigurer的类,该类具有所有视图解析器,如下所示:

@Configuration
@EnableWebMvc
public class ViewConfig implements WebMvcConfigurer {

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/signup").setViewName("signup");
    registry.addViewController("/login").setViewName("login");
    registry.addViewController("/dashboard").setViewName("dashboard");
    registry.addViewController("/logout").setViewName("redirect:/");
}

这感觉更加简洁明了。

但是,每当我尝试加载任何这些页面时,这都会给我405方法不允许错误。为什么会这样呢? Spring Boot是否不支持WebMvcConfigurer?

1 个答案:

答案 0 :(得分:0)

Spring Boot Documentation中提到了这一点,您可以在spring mvc部分下使用WebMvcConfigurer,但无需执行@EnableWebMvc

所以您应该删除@EnableWebMvc注释!

@Configuration
// @EnableWebMvc Remove this!
public class ViewConfig implements WebMvcConfigurer {

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/signup").setViewName("signup");
    registry.addViewController("/login").setViewName("login");
    registry.addViewController("/dashboard").setViewName("dashboard");
    registry.addViewController("/logout").setViewName("redirect:/");
}