@Slf4j
@Component
public class CdcConsumer implements DebeziumEngine.ChangeConsumer<ChangeEvent<String, String>> {
CdcTableSyncFactory cdcTableSyncFactory;
@Autowired
private KafkaTemplate kafkaTemplate;
如上图所示,在使用注解 @Component类使用@Autowired,这时候是无法自动注入的,会报空指针异常,因为@Component是把普通类在spring加载时候加载成bean,这时候 KafkaTemplate 还未加载,自动注入的自然是空指针了,找了挺多方法,都挺麻烦,下面介绍最简单的一种
@Slf4j
@Component
public class CdcConsumer implements DebeziumEngine.ChangeConsumer<ChangeEvent<String, String>> {
CdcTableSyncFactory cdcTableSyncFactory;
private static KafkaTemplate kafkaTemplate;
@Autowired
public void setKafkaTemplate(KafkaTemplate kafkaTemplate) {
CdcConsumer.kafkaTemplate = kafkaTemplate;
}
通过set方法注入就可以了,亲测可行。