SpringBoot启动时定义的多个自动配置排除

时间:2016-11-15 13:26:38

标签: spring-boot

我正在开发一个公司的Spring Boot扩展,它可以自动配置自己的RabbitMQ客户端。此扩展(启动器)取代了Spring Boot RabbitAutoConfiguration。

我知道有很多方法可以禁用RabbitAutoConfiguration:

  • 每个应用程序(主)类中使用@EnableAutoConfiguration(exclude = RabbitAutoConfiguration.class)或@SpringBootApplication(exclude = RabbitAutoConfiguration.class)
  • 使用spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration 在application.properties或yml文件(外部化或在jar中)中

我想知道我的新启动器的存在是否会禁用Spring Boot RabbitAutoConfiguration。

我尝试了一些脏东西,例如在公司启动程序模块中放置带有exclude属性的application.properties,但由于Spring Boot只读取类路径中的一个,因此可以通过客户端应用程序中使用的方法轻松覆盖它。我不想强加一些限制。

我不喜欢每个应用程序添加相同排除方式(属性或注释)的想法。

有什么想法吗?

修改

我需要在同一个应用程序中配置几个RabbitMQ ConnectionFactoryRestTemplate

1 个答案:

答案 0 :(得分:2)

如果您想真正替换您的标准RabbitAutoConfiguration,您只需在自己的自动配置中添加@AutoconfigureBefore(RabbitAutoConfiguration.class)即可教导Spring Boot在标准版之前处理您的。{/ p >

如果它是替代品,您将注册标准自动配置将检测到的bean,并且它将以与您手动定义它们相同的方式退回。

话虽如此,你为什么要这样做?我宁愿补充现有的自动配置,而不是替换标准的自动配置。标准版有问题吗?如果是这样,我们很乐意听到它并调整代码,以便您不必完全替换它。