Я использую Spring Integration + Spring Cloud Stream для создания следующего потока:
@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
приходят в случае змеи:
{ "some_id" : "1234" }
Если я аннотирую класс Test Event с помощью @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
, он работает хорошо, но я не могу комментировать класс, потому что он из сторонней библиотеки.
Я пытался установить свойство spring.jackson.property-naming-strategy=SNAKE_CASE
, но оно тоже не сработало.
Я тоже пробовал:
@Bean
public ObjectMapper objectMapper(){
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
return mapper;
}
Но это не сработало.
Я думаю, что могу использовать собственный преобразователь для этого преобразования, но я ищу что-то, что изменяет конфигурацию всех преобразователей Spring Integration JSON одновременно.
Заранее спасибо!