【梦幻三端源码】【语音程序源码】【源码剖析的书籍】webmvcconfigurer源码

来源:赤道仪goto源码

1.SpringBoot WebMvcConfigurer详解
2.Spring boot 中 WebMvcConfigurationSupport 详解
3.SpringBoot--WebMvcConfigurer详解
4.WebMvcConfigurer详解
5.WebMvcConfigurationSupport和WebMvcConfigurer的区别

webmvcconfigurer源码

SpringBoot WebMvcConfigurer详解

        WebMvcConfigurer配置类其实是 Spring 内部的一种配置方式,采用 JavaBean 的形式来代替传统的 xml 配置文件形式进行针对框架个性化定制,可以自定义一些Handler,Interceptor,ViewResolver,MessageConverter。基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口;

        在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated(弃用)。官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport,方式一实现WebMvcConfigurer接口(推荐),方式二继承WebMvcConfigurationSupport类,具体实现可看这篇文章。 /fmwind/article/details/

        常用的方法:

        以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurer中的addViewControllers方法即可达到效果了

        值的指出的是,在这里重写addViewControllers方法,并不会覆盖WebMvcAutoConfiguration(Springboot自动配置)中的addViewControllers(在此方法中,Spring Boot将“/”映射至index.html),这也就意味着自己的配置和Spring Boot的自动配置同时有效,这也是我们推荐添加自己的MVC配置的方式。

        比如,我们想自定义静态资源映射目录的话,只需重写addResourceHandlers方法即可。

        注:如果继承WebMvcConfigurationSupport类实现配置时必须要重写该方法,具体见其它文章

        此时会注册一个默认的Handler:DefaultServletHttpRequestHandler,这个Handler也是用来处理静态文件的,它会尝试映射/。当DispatcherServelt映射/时(/ 和/ 是有区别的),并且没有找到合适的Handler来处理请求时,就会交给DefaultServletHttpRequestHandler 来处理。注意:这里的静态资源是放置在web根目录下,而非WEB-INF 下。

          可能这里的描述有点不好懂(我自己也这么觉得),所以简单举个例子,例如:在webroot目录下有一个图片:1.png 我们知道Servelt规范中web根目录(webroot)下的文件可以直接访问的,但是由于DispatcherServlet配置了映射路径是:/ ,它几乎把所有的请求都拦截了,从而导致1.png 访问不到,这时注册一个DefaultServletHttpRequestHandler 就可以解决这个问题。其实可以理解为DispatcherServlet破坏了Servlet的一个特性(根目录下的文件可以直接访问),DefaultServletHttpRequestHandler是帮助回归这个特性的。

        这个方法是用来配置视图解析器的,该方法的参数ViewResolverRegistry 是一个注册器,用来注册你想自定义的视图解析器等。ViewResolverRegistry 常用的几个方法: /fmwind/article/details/

        跨域资源共享向来都是热门的需求,我们可以使用 CORS 来快速实现 跨域访问,只需要在服务端进行授权即可,无需在前端添加额外的设置

        简单说,CORS是一种访问机制,英文全称: Cross-Origin Resource Sharing,即我们说的跨域资源共享。当一个资源从与该资源本身所在服务器不同的域或端口请求一个资源时,资源会发起一个跨域HTTP请求。比如,在一个域名下的网页中,调用另一个域名中的资源。

        对于 CORS的跨域请求,上面的方式是重写webMvcConfigurer实现全局配置,这里展开一下,主要有以下几种方式可供选择:

        在任意配置类,返回一个 新的 CorsFIlter Bean ,并添加映射路径和具体的CORS配置路径。

        参考上面,此处省略

        在控制器上使用注解 @CrossOrigin:

        在Controller方法上使用注解 @CrossOrigin:

        使用 HttpServletResponse 对象添加响应头(Access-Control-Allow-Origin)来授权原始域,这里 Origin的值也可以设置为 "*",源码表示全部放行。

Spring boot 中 WebMvcConfigurationSupport 详解

        新写了一个简单项目,里面需要提供一个接口给第三方访问,第三方要求的接口响应时间为3s,因此需要对接口进行时间的记录 以下是具体的使用。

        实现HandlerInterceptor这个接口

        以上两步完成,即完成拦截器的注册。该拦截器会对 /sell_record/** 请求路径进行拦截。

        controller测试类

        一个简单的拦截器就写完了~

        其中用的比较多的是一下三个接口:

        静态资源处理

        非常重要的提示:Springboot 中只能有一个 WebMvcConfigurationSupport 配置类是真正起作用的,对于这个问题,其实可以通过 implements WebMvcConfigurer 来解决,多个不同的类实现这个接口后的配置都可以正常运行。

        具体可参考 [ Spring Boot中只能有一个WebMvcConfigurationSupport配置类

SpringBoot--WebMvcConfigurer详解

       WebMvcConfigurer配置类在Spring框架中提供了JavaBean方式实现针对框架的个性化定制,简化了传统xml配置文件的源码繁琐。配置类需实现WebMvcConfigurer接口,源码Spring Boot 1.5版本以前通过重写WebMvcConfigurerAdapter的源码梦幻三端源码方法来添加自定义拦截器、消息转换器等。源码Spring Boot 2.0以后推荐直接实现WebMvcConfigurer或继承WebMvcConfigurationSupport。源码

       常用方法包括:

       addInterceptors: 添加拦截器

       addViewControllers: 自定义页面跳转,源码简化SpringMVC中访问页面的源码代码。

       addResourceHandlers: 静态资源映射,源码允许自定义静态资源目录,源码方便管理和访问。源码语音程序源码

       configureDefaultServletHandling: 配置默认静态资源处理器,源码解决静态资源访问问题。源码

       configureViewResolvers: 配置视图解析器,源码自定义视图解析逻辑。源码

       configureContentNegotiation: 配置内容裁决参数,源码剖析的书籍解决数据格式协商问题。

       addCorsMappings: 处理跨域问题,允许特定域名访问。

       configureMessageConverters: 配置信息转换器,处理请求和响应的彩虹下单社区源码数据格式转换。

       在实现WebMvcConfigurer接口时,`addResourceHandlers`方法用于配置静态资源映射路径,例如将`file/static/`目录下的资源映射到项目根目录`E:\\springboot\\`下,允许通过URL直接访问。若使用`WebMvcConfigurationSupport`类,高通kernel源码需确保重写了`addResourceHandlers`方法。此外,`addResourceHandler`方法中路径配置需完整,即`file/`和`static/`均需明确指定。

       `configureDefaultServletHandling`方法则用于注册默认静态资源处理器,如`DefaultServletHttpRequestHandler`,以处理根目录下的静态资源请求,解决由于DispatcherServlet配置映射路径导致的静态资源无法访问问题。

       通过`configureViewResolvers`方法可以配置视图解析器,自定义视图解析逻辑,灵活管理视图文件路径和加载方式。

       其他方法如`configureContentNegotiation`用于配置内容协商参数,`addCorsMappings`处理跨域访问问题,`configureMessageConverters`配置信息转换器,实现请求和响应的数据格式转换。

       实现WebMvcConfigurer接口或继承WebMvcConfigurationSupport类,可以灵活定制Spring MVC框架的行为,简化配置,提高应用的可维护性和扩展性。

WebMvcConfigurer详解

       WebMvcConfigurer接口常用的方法:

        addInterceptor:需要一个实现HandlerInterceptor接口的拦截器实例

        addPathPatterns:用于设置拦截器的过滤路径规则;addPathPatterns("/**")对所有请求都拦截

        excludePathPatterns:用于设置不需要拦截的过滤规则

        拦截器主要用途:进行用户登录状态的拦截,日志的拦截等。

        以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurer中的addViewControllers方法即可达到效果了

        比如,我们想自定义静态资源映射目录的话,只需重写addResourceHandlers方法即可。

        addResoureHandler:指的是对外暴露的访问路径

        addResourceLocations:指的是内部文件放置的目录

        这个方法是用来配置视图解析器的,该方法的参数ViewResolverRegistry 是一个注册器,用来注册你想自定义的视图解析器等。

        configureMessageConverters:信息转换器

WebMvcConfigurationSupport和WebMvcConfigurer的区别

       springboot2.0之后配置拦截器extends 的WebMvcConfigurerAdapter过时,取而代之的是WebMvcConfigurationSupport。WebMvcConfigurerAdapter只是对WebMvcCofigurer的空实现,而WebMvcConfigurationSupport的实现的方法更全面

        继承WebMvcConfigurationSupport会发现Spring Boot的WebMvc自动配置失效(WebMvcAutoConfiguration自动化配置)。

        导致无法视图解析器无法解析并返回到对应的视图。

文章所属分类:热点频道,点击进入>>