Spring boot:排除一些自动配置的bean

时间:2017-04-26 11:44:30

标签: spring-boot spring-kafka

我有一个使用spring-kafka的Spring启动项目。在这个项目中,我构建了一些事件驱动的组件来包装spring-kafka bean(即KafkaTemplate和ConcurrentKafkaListenerContainer)。我想让这个项目成为一组可重用的库,包含一组Spring启动应用程序。但是,当我从Spring启动应用程序向此库添加依赖项时,我在应用启动时收到错误:

ConsumerFactory<A, B>

由于我需要自动装配ConsumerFactory<Object, Object>(而不是escapedCharacters)我在配置类中创建了这个bean,该类使用@EnableConfigurationProperties(KafkaProperties.class)注释

我只需要重用org.springframework.boot.autoconfigure.kafka.KafkaProperties,而不在KafkaAutoConfiguration和KafkaAnnotationDrivenConfiguration中自动配置其他bean。

我试图在我的库中放置 @EnableAutoConfiguration(exclude = KafkaAutoConfiguration.class),但这并不妨碍依赖于我的库的应用程序触发spring-kafka autoconfiguration排除在图书馆。

如何指定我不希望在我的库中自动配置某些bean(KafkaAutoConfiguration和KafkaAnnotationDrivenConfiguration),但也可以在依赖于此库的任何应用中

2 个答案:

答案 0 :(得分:2)

我相信依赖于库的应用程序本身必须从自动配置中排除这些类。

答案 1 :(得分:0)

在servlet初始值设定项中输入相同的内容对我有用。

 @SpringBootApplication(exclude = KafkaAutoConfiguration.class)
public class Application extends SpringBootServletInitializer{

        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(Application .class);
        }


        public static void main(String[] args) {
            SpringApplication.run(GncApplication.class, args);
        }

    }
相关问题