最近改造项目,使用 interceptor 的拦截器进行处理请求参数,发现一个问题,继承了 WebMvcConfigurationSupport ,但是这个类造成了,返回的 date 时间类型被转成了,时间戳,添加 springboot 的参数配置,以及自动主动注入 objectmapper 都不行,后面通过改写 messageconvertors,才进行了时间格式的限制
在 Spring 中,我们经常需要自定义 Spring MVC 的配置。两个常见的方式是继承 WebMvcConfigurationSupport
和实现 WebMvcConfigurer
接口。让我们来探讨一下它们之间的区别:
- WebMvcConfigurer:
WebMvcConfigurer
是一个接口,它提供了多个回调方法,用于添加或修改 Spring MVC 的配置。- 主要用于:
- 添加拦截器。
- 自定义消息转换器。
- 配置视图解析器等。
- 这是一种较为安全的方式,因为接口中的方法都是空实现,你只需要覆盖你想要实现的方法即可。
- WebMvcConfigurationSupport:
WebMvcConfigurationSupport
是一个抽象类,它同样提供了多个回调方法,用于自定义 Spring MVC 的配置。- 主要用于:
- 完全自定义 Spring MVC 的配置。
- 如果你需要对 Spring MVC 进行大量的自定义,可以选择继承该类并重写其中的方法。
- 需要注意的是,继承该类会覆盖 Spring MVC 的部分默认配置。
- 当你只需要对部分配置进行自定义时,应该使用
WebMvcConfigurer
接口。
总之,如果你只需对部分配置进行自定义,推荐使用 WebMvcConfigurer
接口。而如果需要完全自定义 Spring MVC 的配置,可以选择继承 WebMvcConfigurationSupport
并重写相关方法。12345
注意使用 WebMvcConfigurationSupport,会覆盖所有的配置,造成配置的不生效,当改用 WebMvcConfigurer 可以使用。