我正在使用 TestContainers
用于集成测试,我正在使用 @DynamicPropertySource
设置 KafkaContainer
像这样的引导服务器:
@DynamicPropertySource
static void kafkaProperties(DynamicPropertyRegistry registry) {
registry.add("spring.kafka.bootstrap-servers", () -> {
return kafkaContainer1.getHost() + ":" + kafkaContainer1.getFirstMappedPort();
});
}
这就像一个符咒,也就是说在我的 KafkaTopicConfiguration
班级:
@Configuration
public class KafkaTopicConfiguration {
private String bootstrapServers;
public KafkaTopicConfiguration(@Value("${spring.kafka.bootstrap-servers}") String bootstrapServers) {
this.bootstrapServers = bootstrapServers;
}
哪里 bootstrapServers
将获取docker在主机上暴露的Kafka容器的地址。现在,我添加了一个空构造函数,因为我想解决一些问题,比如:
public KafkaTopicConfiguration() {
System.out.println("In KafkaTopicConfiguration constructor");
}
突然间 boostrapServers
价值变成 null
. 当我移除空构造函数时,它就恢复正常了。有人知道为什么吗?谢谢。
1条答案
按热度按时间mxg2im7a1#
谢谢@m.deinum指出我的错误。为了子孙后代,我应该加上
@Autowired
注解,告诉spring使用哪个构造函数:不过,我的另一个构造函数是没有用的,我应该在现有的1-arg构造函数上添加sysout;-)