有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案