mysql的bean配置_Spring boot 按需启用组件Bean

ConditionalOnProperty 这个注解,可以用于控制某个业务组件,是否开启。

当我们在配置文件中加上enabled: true, 开启组件, 没有配置,默认关闭组件

这样我们可以定制化一个通用的模块,它是开,还是关,从而达到充分复用代码的目的。

比如我们封装好的一个核心Lib, 里面有各种MongoDB, Redis, Mysql ,还有各种外部服务,比如发邮件,发短信。

通常我们一个新业务来了,我总是希望能复用这些基础代码类库,但是如果直接引入进来,那就要加一万条配置,烦的一笔。

所以我们就利用了ConditionalOnProperty注解,实现了定制化,可以开、关业务组件。

比如我需要发邮件的时候,我就配置文件加一项,如果不需要,就关掉。

我们看一下配置长什么样子,在application.yml配置中

db63000c249541ec1d2ca7dbdd3a364d.png

这里有个JDBC配置, 现在是开启状态。

我们看代码中

f1ed5d3df178d4aafa73920c204079e3.png

这个组件里面就用到了@ConditionalOnProperty注解,这个class里面有很多Bean,如果条件不满足,它就不会被启动加载, 当需要的时候,你只需要把参数改一下,就可以用了。

关于ConditionalOnProperty的规则,可以查看官方注释说明,以及示例。

@Conditional检查指定的属性是否具有特定值。 默认情况下,属性必须存在于环境中,并且不等于false。 具有havingValue()和matchIfMissing()属性允许进行进一步的自定义。

具有havingValue()属性可用于指定该属性应具有的值。 下表显示条件何时根据属性值和havingValue()属性匹配:

e3f31fa5fc76fd07c2255ed15733897f.png

如果该属性根本不包含在环境中,则请查询matchIfMissing()属性。 默认情况下,缺少的属性不匹配。

此条件不能可靠地用于匹配收集属性。 例如,在以下配置中,如果环境中存在spring.example.values,则条件匹配,但如果存在spring.example.values [0],则条件不匹配。

@ConditionalOnProperty(prefix = "spring", name = "example.values") class ExampleAutoConfiguration { }

上面的例子 ,你最好换一下,换成自己的变量命名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值