您的位置:首页 > 编程语言 > Java开发

(七)SpringBoot的MVC自动配置

2020-01-13 08:37 483 查看

文章目录

Spring MVC配置

Spring Boot提供了Spring MVC的自动配置类WebMvcAutoConfiguration。

组件配置类

WebMvcAutoConfigurationAdapter是MVC自动配置类中的静态类,它也是一个配置类,这个类中定义了MVC的一些组件,并提供了默认的配置。那么我们怎么才能对这些配置进行扩展呢?事实上一些组件中提供了相应的方法,它们将在程序启动后扫描容器中是否有用户定制的组件,如果有,就将其与基本配置组合起来,再进行加载;否则就以默认配置进行加载。

程序源码

定制组件配置类

如果在项目中,我们需要定制的MVC组件很多,又不想分别创建每一个组件再加入容器。Spring Boot为我们提供了一个更便捷的方式:通过WebMvcConfigurerAdapter适配器类,我们可以定制自己的组件配置类,并只给其中需要的组件提供方法实现。WebMvcAutoConfigurationAdapter类在加载时会将EnableWebMvcConfiguration类导入,它的父类提供的setConfigurers()方法会在程序启动后扫描到我们定制的组件配置类,并将它们与基本配置组合,再进行加载。

程序源码

定制视图映射组件

定制组件配置类:

@Component
public class MyWebMvcConfig extends WebMvcConfigurerAdapter{

@Override
public void addViewControllers(ViewControllerRegistry registry) {
// 浏览器请求/main时响应/index
registry.addViewController("/main").setViewName("/index");
}

}

定制拦截器组件

拦截器类:

class MyHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
return false;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
}

定制组件配置类:

@Component
public class MyWebMvcConfig extends WebMvcConfigurerAdapter{

@Override
public void addInterceptors(InterceptorRegistry registry) {
// 将拦截器加入组件配置,并声明拦截请求路径。
registry.addInterceptor(new MyHandlerInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/main").excludePathPatterns("index");
}

}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
望月佐紀 发布了40 篇原创文章 · 获赞 88 · 访问量 2800 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: