java - 默认情况下使用依赖项启用 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 感觉有点不对劲。
解决方案
推荐阅读
- java - PreAuthorize 在 Spring Security 中不起作用
- python - Python 3 从体育网站提取 html 数据
- python - “索引 14 超出轴 0 的范围,大小为 2”
- c# - ASP.NET core OData:将包含字典的类序列化为 JSON,字典变成键值对数组。需要它是一个对象
- c# - 以窗口形式显示来自 CLIPS 的信息
- python - 如何在python中异步运行http请求
- stata - 将变量的值插入矩阵 - Stata
- node.js - Nodejs 在开发过程中崩溃导致连续的“EADDRINUSE:地址已在使用中”。解决方法?
- regex - Bash 命令计数文件
- r - 设置数据以比较多个 RMSE 值 - 获取列名错误