Spring@Conditional注解使用示例
Spring 里的@Conditional
注解,是那种你用过一次就会上瘾的功能。它能帮你按条件去加载 bean,写配置的时候就像开了外挂。举个例子,如果你只想在环境变量里开了my.service.enabled
的时候才加载某个 bean,那它就合适,代码也不复杂,用起来挺顺手的。
实际开发中你会用到一些更方便的注解,比如@ConditionalOnClass
、@ConditionalOnMissingBean
这些,Spring Boot 里用得贼多,基本是写自动配置的标配。嗯,如果你搞过 Starter 开发,那你肯定见过。
这段示例代码就比较实用,自己写条件类,实现Condition
接口,在matches()
里做判断。比如下面这样:
static class ExampleCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().getProperty("my.service.enabled", Boolean.class, false);
}
}
你在 bean 那边加上@Conditional(ExampleCondition.class)
就行了,简单又清晰。
配置类也能用@Conditional
,整包 bean 都能一键控制,挺适合按模块开关服务的场景。如果你做多环境部署或者组件化的系统,这招可以少掉不少麻烦。
如果你对这块感兴趣,推荐你顺手看看Spring Boot 中 Conditional 和自动配置实例详解,还有其他几篇也挺有料的。
下载地址
用户评论