有人能帮我一下吗?
我需要将Java8LocalDate转换为JSON,反之亦然,在我的REST应用程序中,我将调用REST API的MVC应用程序。由于默认JacksonJAXbJSONProvider不解析LOcalDate,所以我编写了如下所示的自定义映射器,并在pom.xml中添加了依赖项
public class LocalDateObjectMapperContextResolver implements ContextResolver<ObjectMapper>{
private final ObjectMapper MAPPER;
public LocalDateObjectMapperContextResolver() {
MAPPER = new ObjectMapper();
MAPPER.registerModule(new JavaTimeModule());
//MAPPER.findAndRegisterModules();
MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
}
@Override
public ObjectMapper getContext(Class<?> type) {
return MAPPER;
}
}
这是在Java 8 LocalDate Jackson格式中提出的
我需要将它传递给spring.xml中的消息转换器。
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"
p:objectMapper-ref="objectMapper"/>
</mvc:message-converters>
</mvc:annotation-driven>
<mvc:annotation-driven >
<mvc:message-converters register-defaults="false">
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
<!-- p:objectMapper-ref="objectMapper"/> -->
<property name="objectMapper" ref="localDateMapper" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
这显然是不正确的,因为我在需要映射器的地方传递了解析器。如何调用自定义类的getContext()方法并在消息转换器中进行设置?现在,它在创建名为'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0'的bean时开始抛出异常:无法创建类型为[org.springframework.http.converter.json.mappingJacksonHttpMessageConverter]的内部bean'org.springframework.web.servlet.mvc.method.annotation.requestMappingHandlerAdapter#0'而设置键为[0]的bean属性“Message Converters”;嵌套异常是org.springframework.beans.factory.beanCreationException:创建ServletContext资源[/WEB-INF/spring.xml]中定义的名为'org.springframework.http.converter.json.mappingJacksonHttpMessageConverter#0'的bean时出错:bean初始化失败;嵌套异常是org.springframework.beans.conversionNotSupportedException:未能将类型“****Package***.LocalDateObjectMapperContextResolver”的属性值转换为属性“Object Mapper”所需的类型“org.codehaus.jackson.map.ObjectMapper”;嵌套异常是java.lang.IllegalStateException:无法将类型[****Package***.LocalDateObjectMapperContextResolver]的值转换为属性“Object Mapper”所需的类型[org.codehaus.jackson.map.ObjectMapper]:找不到匹配的编辑器或转换策略
您只需要自定义模块,而不需要映射器。然后相应地配置spring:
<bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
p:simpleDateFormat="yyyy-MM-dd"
p:modulesToInstall="your.module.JavaTimeModule"/>
<bean id="xmlMapper" parent="objectMapper" p:createXmlMapper="true"/>
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="objectMapper"/>
</bean>
<bean class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter">
<property name="objectMapper" ref="xmlMapper"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
我想把我的spring web应用程序替换成使用spring boot的版本,并拥有不同于常规的web-app目录。(src/main/webapp->src/main/其他名称) Before:它具有默认servlet的servlet上下文配置。
以下示例适用于请求,但不适用于。我的目标是让spring自动从input(请求正文和查询参数)解析: 作品: POSTlocalhost:8080/datetime 但GET也不适用: 获取localhost:8080/datetime?日期=2022-02-02 结果: org.springframework.web.bind.support.WebExchangeBindException:方
我在使用spring-jms模块转换来自RabbitMQ的消息时遇到了一些问题。以前,我使用Rest APIendpoint发送消息,该endpoint将消息发送到RabbitMQ队列,并使用@JMSListener方法处理它。 在内部,这种行为添加了一个字段来确定Java类型,由Spring库管理。但是,现在我想避免Rest API调用,因为它不是必需的,而且我可以直接将消息发送到RabbitM
问题内容: 我搜索了以下问题,但找不到答案。 我想通过编写实现 org.springframework.core.convert.converter.Converter的 自定义转换器来使用spring的转换服务。 然后我添加我的自定义转换器,如下所示: 执行上述操作时,我的应用程序初始化失败,因为我要覆盖bean conversionService并仅注册我的自定义转换器。 我如何才能不覆盖co
使用MVC Java编程配置方式时,如果你想替换Spring MVC提供的默认转换器,完全定制自己的HttpMessageConverter,这可以通过覆写configureMessageConverters()方法来实现。如果你只是想定制一下,或者想在默认转换器之外再添加其他的转换器,那么可以通过覆写extendMessageConverters()方法来实现。 下面是一段例子,它使用定制的Ob
因此,当我将对象转换为JSON字符串时: dob以以下方式写入JSON字符串: “dob”:{“年份”:1964,“月份”:“二月”,“纪年”:{“日历类型”:“ISO8601”,“ID”:“ISO”},“月份值”:2,“DayofMonth”:13,“DayofWeek”:“星期四”,“Era”:“CE”,“DayofYear”:44,“LeapYear”:true 所以,我不知道我是如何做到这