我是靠谱客的博主 明亮棒球,最近开发中收集的这篇文章主要介绍六、SpringBoot 配置 SpringMVC,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、扩展 SpringMVC

  编写一个配置 SpringMVC 的配置文件类,需要继承 WebMvcConfigurerAdapter,实现相应配置即可。


//WebMvcConfigurerAdapter 来扩展 SpringMVC 的功能
@Configuration
public class MyConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// super.addViewControllers(registry);
registry.addViewController("/zc").setViewName("/success");
}
}

  也可以像下面这样写:


//WebMvcConfigurerAdapter 来扩展 SpringMVC 的功能
@Configuration
public class MyConfig extends WebMvcConfigurerAdapter {
//将当前 WebMvcConfigurerAdapter 添加到 IOC 容器中。
@Bean
public WebMvcConfigurerAdapter webMvcConfigurerAdapter() {
WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/index").setViewName("login");
registry.addViewController("/main.html").setViewName("dashboard");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
//LoginHandleInterceptor 是自定义的拦截器,可以设置拦截器要拦截的路径以及不需要拦截的路径。(excludePathPatterns:不需要拦截的路径)
registry.addInterceptor(new LoginHandleInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/index","/","/user/login");
}
};
return
adapter;
}
}
容器中的 WebMvcConfigurer 会一起起作用,包括我们的配置类 WebMvcConfigurerAdapter 也会起作用。

2、全面接管 SpringMVC

SpringBoot对SpringMVC的自动配置不需要了,所有都是我们自己配置;所有的SpringMVC的自动配置都失效了


//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
//使用 @EnableWebMvc 来关闭对 SpringMVC 的自动配置
@EnableWebMvc
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//设置映射的路径
registry.addViewController("/").setViewName("login");
registry.addViewController("/index").setViewName("login");
registry.addViewController("/main.html").setViewName("dashboard");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandleInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/index","/","/user/login");
}
}

原理:

  为什么我们加了 @EnableWebMvc 自动配置就失效了?

1)、@EnableWebMvc的核心


@Import(DelegatingWebMvcConfiguration.class)
public @interface EnableWebMvc {

2)、


@Configuration
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {

3)、


@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurerAdapter.class })
//容器中没有这个组件的时候,这个自动配置类才生效 
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {

@ConditionalOnMissingBean(WebMvcConfigurationSupport.class):当容器中没有这个组件时,自动配置才会生效,当我们手动添加这个组件到 IOC 容器中时,就自然不会再使用 SpringBoot对SpringMVC的自动配置。

同样,我们可以根据项目的需要在 application.properties(application.yml) 文件中去配置视图解析路径。


spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp

最后

以上就是明亮棒球为你收集整理的六、SpringBoot 配置 SpringMVC的全部内容,希望文章能够帮你解决六、SpringBoot 配置 SpringMVC所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部