概述
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复