私はspring-kafkaを使用するSpringブートプロジェクトを持っています。このプロジェクトでは、spring-kafka bean(つまり、KafkaTemplateとConcurrentKafkaListenerContainer)をラップするイベント駆動型コンポーネントをいくつか作成しました。私は、このプロジェクトを一連のSpringブートアプリケーションにまたがって再利用可能なライブラリにしたいと考えています。しかし、私は春ブーツアプリからこのライブラリに依存関係を追加するとき、私はアプリの起動時にエラーが発生します:スプリングブート:いくつかの自動設定された豆を除きます。
APPLICATION FAILED TO START
Description:
Parameter 1 of method kafkaListenerContainerFactory in org.springframework.boot.autoconfigure.kafka.KafkaAnnotationDrivenConfiguration required a bean of type 'org.springframework.kafka.core.ConsumerFactory' that could not be found.
- Bean method 'kafkaConsumerFactory' in 'KafkaAutoConfiguration' not loaded because @ConditionalOnMissingBean (types: org.springframework.kafka.core.ConsumerFactory; SearchStrategy: all) found bean 'kafkaConsumerFactory'
Action:
Consider revisiting the conditions above or defining a bean of type 'org.springframework.kafka.core.ConsumerFactory' in your configuration.
私はConsumerFactory<A, B>
(やないConsumerFactory<Object, Object>
)をautowireする必要があるので、私はだな構成クラスでこのBeanを作成します@EnableConfigurationProperties(KafkaProperties.class)
で注釈を付け、私は必要なのはKafkaAutoConfigurationとKafkaAnnotationDrivenConfigurationに自動設定されている他の豆なしorg.springframework.boot.autoconfigure.kafka.KafkaPropertiesを再利用することです。
私は自分のライブラリーに@EnableAutoConfiguration(= KafkaAutoConfiguration.classを除外)を置くことを試みたが、これは、ライブラリに除外春・カフカ自動設定をトリガするために自分のライブラリに依存するアプリケーションを防止していません。
どのように私は私のライブラリ内のいくつかの豆(KafkaAutoConfigurationとKafkaAnnotationDrivenConfiguration)の自動設定が、このライブラリに依存して任意のアプリでもを望んでいないように指定することができますか?