没有限定的bean,用@configurationproperties注解

xggvc2p6  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(523)

我使用@configurationproperties配置属性:

  1. @Getter
  2. @Setter
  3. @ConfigurationProperties("kafka")
  4. public class KafkaConnectionSettings {
  5. private String bootstrapAddress = "dataflow-kafka:9092";
  6. {

并尝试在其他配置类中自动连接它。例如:

  1. @Configuration
  2. @AllArgsConstructor
  3. public class KafkaProducerConfig {
  4. private KafkaConnectionSettings kafkaSettings;
  5. @Bean
  6. public ProducerFactory<String, String> producerFactory() {
  7. Map<String, Object> configProps = new HashMap<>();
  8. configProps.put(
  9. ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,kafkaSettings.getBootstrapAddress());
  10. }
  11. }

但我得到以下例外:

  1. No qualifying bean of type 'com.app.config.kafka.KafkaConnectionSettings' available: expected single matching bean but found 2: kafkaConnectionSettings,kafka-com.app.config.kafka.KafkaConnectionSettings

考虑到在“com.app.config”包中我有一个类似的配置,这有点奇怪:

  1. @Getter
  2. @Setter
  3. @ConfigurationProperties("app")
  4. public class FileSettings {
  5. }

最后一个authowired在类中成功地用@service注解
我做错什么了?

z0qdvdin

z0qdvdin1#

问题解决了。我忘了在testclass的@enableconfigurationproperties中添加kafkanConnectionSettings.class

  1. @ActiveProfiles("test")
  2. @EnableConfigurationProperties({FileSettings.class, KafkaConnectionSettings.class})
  3. @RunWith(SpringRunner.class)
  4. @SpringBootTest
  5. public class AppTest {

对不起,这个问题不太清楚。

相关问题