当前位置: 首页 > news >正文

Spring MVC Controller返回json日期格式配置失效的解决办法

如题,Spring MVC 4.3.0版本,配置jackson读写json。Controller层方法返回值对象包含java.util.Date类型的属性,并且在applicationContext.xml中配置了jackson的日期格式:

    <mvc:annotation-driven><mvc:message-converters><bean class="org.springframework.http.converter.StringHttpMessageConverter"/><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<!--                <property name="objectMapper" ref="objectMapper"/>--><constructor-arg index="0" ref="objectMapper"/></bean></mvc:message-converters></mvc:annotation-driven><bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"><property name="simpleDateFormat" value="yyyy-MM-dd HH:mm:ss"/></bean>

但是调用Controller层方法发现日期格式返回的是时间戳,日期格式配置失效了。

经过多次调试跟踪,笔者发现原因是<mvc:annotation-driven>标签会自动注册RequestMappingHandlerAdapter(位置在WebMvcConfigurationSupport类中),其中setMessageConverters方法会覆盖掉我们配置的jackson converter,因此问题的解决从Spring容器中获取RequestMappingHandlerAdapter这个bean,然后找到内部的MappingJackson2HttpMessageConverter,以代码的方式重新配置即可。

@Configuration
//@EnableWebMvc
public class MyWebMvcConfigurer extends WebMvcConfigurerAdapter {private final Logger logger = LoggerFactory.getLogger(MyWebMvcConfigurer.class);@Autowiredprivate RequestMappingHandlerAdapter adapter;@PostConstructpublic void configureAdapter() {for(HttpMessageConverter<?> converter: adapter.getMessageConverters()) {if(converter instanceof MappingJackson2HttpMessageConverter) {ObjectMapper objectMapper = new ObjectMapper();objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));((MappingJackson2HttpMessageConverter) converter).setObjectMapper(objectMapper);}}}
}

http://www.lryc.cn/news/426717.html

相关文章:

  • 3.Default Constructor的构造操作
  • CSS的:current伪类:精准定位当前活动元素
  • 搭建个人网站
  • 机器学习课程学习周报八
  • 福泰轴承股份有限公司进销存系统pf
  • 【k8s从节点报错】error: You must be logged in to the server (Unauthorized)
  • 风清扬/基于Java语言的光伏监控系统+光伏发电预测+光伏项目+光伏运维+光伏储能项目
  • Datawhale X 魔搭 AI夏令营第四期 魔搭-AIGC方向全过程笔记
  • 数组---怎么样定义和引用数组
  • Nginx—Rewrite
  • 《深入浅出WPF》读书笔记.5控件与布局(上)
  • 二叉树的判断
  • Hive3:常用的内置函数
  • 设计模式---构建者模式(Builder Pattern)
  • Pytorch中transform的应用
  • okular阅读软件简介
  • 【书生大模型实战营(暑假场)闯关材料】基础岛:第1关 书生大模型全链路开源体系
  • 掌握抽象工厂模式:打造灵活且强大的跨平台产品族
  • 【Hadoop】建立圈内组件的宏观认识(大纲版)
  • NFS主从同步Rsync、sersync2
  • uniapp项目中,在原有数据中增加选中的状态,数据不改变
  • WPF自定义控件
  • Java中的全局异常处理器 -- GlobalExceptionHandler
  • R语言文本挖掘-万字详细解析tm包
  • JWT中的Token
  • 苹果在iOS 18.1中向第三方开发者开放iPhone的NFC芯片
  • 系统开发之禁止卸载应用名单
  • wait 和 notify
  • docker 启动 mongo,redis,nacos.
  • Docker Swarm 搭建