我正在尝试使用Jackson在骆驼路由上序列化POJO和反序列化POJO到JSON和从JSON到JSON。其中一些有Java8 LocalDate字段,我希望它们序列化为YYYY-MM-DD字符串,而不是整数数组。
我们只对Spring Boot应用程序使用Java配置,因此没有XML骆驼配置。
我已经成功地创建了一个ObjectMapper来执行我想要的操作,通过将此添加到我们的依赖项中,我们系统的其他部分正在使用该ObjectMapper:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
return builder
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.build();
}
@Component
public class MyRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
restConfiguration().component("servlet").contextPath("/mycontext")
.port(8080).bindingMode(RestBindingMode.json);
rest("/myendpoint)
.get()
.route()
.to("bean:myService?method=myMethod()");
}
}
@Component
public class MyRouteBuilder extends RouteBuilder {
@Autowired
private MyBean myBean;
@Override
public void configure() {
from(uri)
.unmarshal().json(JsonLibrary.Jackson)
.bean(myBean);
}
}
但是,默认情况下,Camel创建自己的ObjectMapper实例,因此不使用jackson2objectMapperBuilder
自动添加的JSR310序列化器/反序列化器,也不使用禁用的write_dates_as_timestamps
特性。我读过Camel JSON文档,但它没有展示如何使用Spring配置添加自定义数据格式,或者如何为所有类型应用全局自定义。
那么,我如何告诉Camel使用我的ObjectMapper,只使用Spring BootJava配置呢?
我已经找到了一个解决方案,通过逐步通过骆驼代码。因此,虽然它做了我想要的,但它可能无法与Camel的未来版本一起工作,因为它似乎没有文档,而且可能不受支持。
除了问题中的objectmapper
bean之外,我所做的只是将以下bean添加到Spring配置中:
@Bean(name = "json-jackson")
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public JacksonDataFormat jacksonDataFormat(ObjectMapper objectMapper) {
return new JacksonDataFormat(objectMapper, HashMap.class);
}
需要注意的关键要点:
我在学习Spring Boot时遇到了一些编码问题;我想添加一个像Spring3.x那样的CharacterEncodingFilter。就像这样:
我知道在DispatcherServlet之外使用请求范围bean需要一些配置,并且已经阅读了http://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes-oth,但是还没有成功: 对于Servlet3.0+,这可以通过WebApplicationIni
我试图用1.5.15.release版本在Spring Boot项目中配置LettuceConnectionFactory。
我想避免对象达到的最大对象图大小:840-错误。按照这个 此元素具有以下属性:maxDepth–控制在引擎大小采取任何操作之前可以访问多少链接对象。此属性是必需的。MaxDepthexceedBehavior–指定在调整对象图大小时超过最大深度时发生的情况: 这怎么能在ehcache3和springboot中设定。使用编程配置。我没有在ehcache 3.4的springboot中使用xml
我正在尝试开始将Jetty与Camel一起使用。我已将依赖项添加到我的pom: 我的CamelContext初始化如下: 当我尝试启动我的服务时,该服务具有定义为以下endpoint的路由: 我得到一个例外: 关于如何设置码头组件的文档最多也缺乏。我发现了一个邮件列表条目,其中说JettyHttpComponent自Camel 2.15以来一直是抽象的,现在该组件必须使用JettyHttpComp
在骆驼中使用restdsl时,我可以看到如何配置一些功能: 但无法查看如何配置特定于jackson的模块。例如: 我需要这个来获取java。时间LocalDate已正确序列化。