-
Notifications
You must be signed in to change notification settings - Fork 41.5k
Description
Background
In our use case, we need to support connecting to multiple Kafka servers. Spring does not support this. We want to use Spring's KafkaTemplate, but when spring-kafka and spring boot are both on the classpath, KafkaAutoConfiguration is automatically activated, and there is no configuration like spring.kafka.enabled
to disable the auto-configuration.
Why not use @SpringBootApplication(exclude = KafkaAutoConfiguration.class)
to exclude the auto-configuration class?
Changing code for every service just sucks... We will provide a library to support configuring multiple Kafka servers, like creating our own Spring Boot starter.
More thoughts
Consider providing a spring.<module>.enabled
configuration for Spring Boot modules (e.g., spring.datasource.enabled
, spring.redis.enabled
). When users develop based on Spring Boot, if there is this configuration, they do not need to force auto-configuration because sometimes users just want to use Spring's code (JdbcTemplate
, RedisTemplate
), not auto-configuration. I have written some Spring Boot starters, and I always provide an enabled
configuration for a feature (with a reasonable default value). It works very well and makes testing easier.