首页 > 解决方案 > 默认情况下使用依赖项启用 Spring 自动配置

问题描述

让我们想象一个 Maven 模块autoconfig及其对应的 starter foo-spring-boot-starter

autoconfig

只有当foo依赖项实际存在时,我才想应用一个自动配置类。

@Configuration
public class FooAutoConfiguration {
  @Bean
  @ConditionalOnMissingBean
  public FooClass fooClass() {
    return new FooClass();
  }
}

pom.xml包括对foo.

<dependency>
  <groupId>com.acme</groupId>
  <artifactId>foo</artifactId>
  <optional>true</optional>
</dependency>

foo-spring-boot-starter

pom.xml包括对foo.

<dependency>
  <groupId>com.acme</groupId>
  <artifactId>foo</artifactId>
</dependency>

条件

虽然我可以应用@ConditonalOnClass(FooClass.class)到我的自动配置,但现实是我有一个更复杂的情况,我实际上依赖于各种foo依赖类。有没有一个很好的模式来有条件地应用自动配置,而不明确列出所有类? foo我还希望避免使用 a@ConditionalOnProperty来显式启用该功能,因为我认为 starter+property 感觉有点不对劲。

标签: javaspringspring-boot

解决方案


推荐阅读