【发布时间】:2023-03-10 15:31:01
【问题描述】:
内存服务器中的 Spring-Kafka 以随机端口启动。因此 application.yml 条目是一个变量:
bootstrap-servers: ${spring.embedded.kafka.brokers}
但是,该属性仅在嵌入式 Kafka 服务器实际运行时设置。 在没有嵌入 Kafka 的单元测试中抛出异常(因为实际上没有设置变量):
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'kafkaReceiverConfig': Injection of
autowired dependencies failed; nested exception is
java.lang.IllegalArgumentException: Could not resolve placeholder
spring.embedded.kafka.brokers' in value "${spring.embedded.kafka.brokers}"
这里是Java配置类:
@Configuration
@EnableKafka
public class KafkaReceiverConfig {
@Value("${kafka.bootstrap-servers}")
private String bootstrapServers;
@Bean
public KafkaReceiver kafkaReceiver() {
return new KafkaReceiver();
}
}
灵感来自here。
目前的解决方法是将嵌入式 Kafka 包含到每个单元测试中)-;
如何避免如此严厉的措施?
【问题讨论】:
标签: java spring-boot junit apache-kafka spring-kafka