@Bean public IntegrationFlow testEventFlow(){ return IntegrationFlows.from(TestEventSink.INPUT) .transform(Transformers.fromJson(TestEvent.class)) .transform(TestEvent::getSomeId) .log() .channel("nullChannel") .get(); }
测试事件类为:
public class TestEvent { private String someId; public TestEvent(){} public TestEvent(String someId){ this.someId = someId; } public String getSomeId(){ return someId; } public void setSomeId(String someId){ this.someId = someId; } }
TestEventSink.INPUT 以蛇为例:
TestEventSink.INPUT
{ "some_id" : "1234" }
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) 它工作得很好,但是我不能注释类,因为它来自第三方库。
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
spring.jackson.property-naming-strategy=SNAKE_CASE ,但也不起作用。
spring.jackson.property-naming-strategy=SNAKE_CASE
@Bean public ObjectMapper objectMapper(){ ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); return mapper; }
但没用。
提前谢谢!
您缺少一个事实,即注入由Spring Boot自动配置的 ObjectMapper fromJson() 工厂:
ObjectMapper
fromJson()
. transform(Transformers.fromJson(TestEvent.class), new Jackson2JsonObjectMapper(objectMapper))
关键是Spring集成比Spring启动早,但反之亦然,因此自动配置在Spring集成中不可见。