太厉害了,终于有人把 Spring 条件注解讲明白了,送你上岸!

Hello,今天给各位童鞋们分享 Spring 条件注解,赶紧拿出小本子记下来吧!

条件注解
条件注解就是在满足一定条件下,配置才会生效。我们以 Linux 和 Windows 操作系统为例,在 Linux 系统下查看目录命令为 ls,在 Windos 系统下目录命令为 dir,来实现根据当前操作系统实现不同的功能。
1、显示目录命令接口
先定义一个显示目录命令的接口。

2、实现接口
分别实现 Linux 下和 Windows 下的实例


实现接口 Condition
实现 Linux 和 Windows 下的条件


配置 Bean


测试

结果显示

多环境切换
在公司开发中,我们需要在开发、生产环境下进行快速切换,这时可以是用 Spring 中的 Profile 来解决这个问题,如下:


可以看出 Profile 注解底层也是 Condition 实现的,接下来定义一个数据源类 DataSource

配置 Bean

加载配置类,测试结果

会发现,当设置 prod 环境时,数据源为 prod 环境下的参数。证明实现了多环节切换。
好啦,今天的文章就到这里,希望能帮助到屏幕前迷茫的你们!
评论