springboot注解Conditional的用法
Condition 是在Spring中的的条件注解,通过这个注解可以根据条件,决定类是否加载到Spring Ioc容器中。
@Conditional的使用
注解实现:
public class AnnotationMethodLoader implements Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
Environment environment = conditionContext.getEnvironment();
String modeName = environment.getProperty("modeName");
MultiValueMap<String, Object> attributes = annotatedTypeMetadata.getAllAnnotationAttributes(Component.class.getName());
if (attributes != null) {
List<Object> value = attributes.get("value");
if (Objects.equals(value.get(0), modeName)){
return true;
}
}
return false;
}
}
使用:
@Conditional({AnnotationMethodLoader.class})
@Component(value = "mytestA")
@Slf4j
public class DylCreateMedalProcessor extends AbstractCreateMedalProcessor {
}
- 以上便是个简单的根据不同的配置加载不同的类的例子。
- 除去自己实现的Conditional外,Spring还帮我们添加好了一些常用的注解,具体注解如下:
Conditions | 描述 |
---|---|
@ConditionalOnBean | 在存在某个bean的时候 |
@ConditionalOnMissingBean | 不存在某个bean的时候 |
@ConditionalOnClass | 当前classpath可以找到某个类型的类时 |
@ConditionalOnMissingClass | 当前classpath不可以找到某个类型的类时 |
@ConditionalOnResource | 当前classpath是否存在某个资源文件 |
@ConditionalOnProperty | 当前jvm是否包含某个系统属性为某个值 |
@ConditionalOnWebApplication | 当前spring context是否是web应用程序 |
时在中春,阳和方起
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决