Когда указано в application.yml
, Кафка создает объекты, а не Spring.Кафка ничего не знает о @Value
.
. Вам нужен Spring, чтобы создать десериализатор и внедрить его непосредственно на потребительскую фабрику.См. документацию .
Важно
Только свойства могут быть выполнены с простой настройкой;для более сложной конфигурации (например, использование пользовательского ObjectMapper в сериализаторе / десериализаторе) следует использовать конструкторы фабрики производителя / потребителя, которые принимают предварительно созданный сериализатор и десериализатор.Например, с помощью Spring Boot, чтобы переопределить фабрики по умолчанию:
@Bean
public ConsumerFactory<Foo, Bar> kafkaConsumerFactory(KafkaProperties properties,
JsonDeserializer customDeserializer) {
return new DefaultKafkaConsumerFactory<>(properties.buildConsumerProperties(),
customDeserializer, customDeserializer);
}
@Bean
public ProducererFactory<Foo, Bar> kafkaProducerFactory(KafkaProperties properties,
JsonSserializer customSerializer) {
return new DefaultKafkaConsumerFactory<>(properties.buildProducerProperties(),
customSerializer, customSerializer);
}