java为什么要明确定义KafkaTemplate bean?
建议显式地为卡夫卡模板创建bean。我使用的是spring boot starter 2.3.3和spring kafka 2.5.5,我注意到您只需使用通配符类型创建一个生产者工厂,kafka模板bean就会自动创建。这种方法的缺点是IDE无法再正确评估@Autowired Kafka模板bean是否确实存在。优点是,在卡夫卡模板中使用许多不同的值类型时,配置更少
我应该明确定义这些bean还有其他原因吗
// In a @Configuration class
// Variant: Just define a wildcard producer
@Bean
public ProducerFactory<String, ?> wildcardProducerFactory(){
return new DefaultKafkaProducerFactory<>(config, new StringSerializer(), new JsonSerializer<>());
}
// Variant: Define specific producer and template
@Bean
public ProducerFactory<String, Foo> fooProducerFactory(){
return new DefaultKafkaProducerFactory(config, new StringSerializer(), new JsonSerializer());
}
@Bean
public KafkaTemplate<String, Foo> fooKafkaTemplate(){
return new KafkaTemplate<>(fooProducerFactory());
}
// Somewhere in a @Component class
// Usage here is the same for both variants
@Autowired
private KafkaTemplate<String, Foo> fooKafkaTemplate;
共 (0) 个答案