【Java Web开发学习】Spring4条件化的bean
【Java Web开发学习】Spring4条件化的bean
转载:https://www.cnblogs.com/yangchongxing/p/9071960.html
Spring4引入了@Conditional注解,可以用到带有@Bean注解的地方,若给定的条件计算为true则创建bean,否则bean被忽略
用法:@Conditional(PlayerCondition.class),设置为@Conditional注解的类必须是任意实现了org.springframework.context.annotation.Condition接口的类。该接口只有一个方法
public boolean matches(ConditionContext context, AnnotatedTypeMetadata matadata) {},返回boolean
package cn.ycx.web.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import cn.ycx.web.model.Painter; import cn.ycx.web.model.PainterCondition; import cn.ycx.web.model.Player; import cn.ycx.web.model.PlayerCondition; @Configuration public class TestConfig { @Bean @Conditional(PlayerCondition.class) public Player player() { return new Player(); } @Bean @Conditional(PainterCondition.class) public Painter painter() { return new Painter(); } }
package cn.ycx.web.model; import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.env.Environment; import org.springframework.core.type.AnnotatedTypeMetadata; public class PlayerCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata matadata) { Environment env = context.getEnvironment();return env.containsProperty("CONDITION_PALY"); } }
package cn.ycx.web.model; import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.env.Environment; import org.springframework.core.type.AnnotatedTypeMetadata; public class PainterCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata matadata) { Environment env = context.getEnvironment();return env.containsProperty("CONDITION_PAINT"); } }
环境变量包含CONDITION_PALY就创建PlayerCondition
环境变量设置:
windows系统
spring.CONDITION_PALY=play
ubuntu系统
当前用户
$ vim ~/.bashrc 追加 export CONDITION_PALY=play $ source ~/.bashrc
所有用户
# vim /etc/profile 追加 export CONDITION_PALY=play # source /etc/profile
分类:
00-Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端