pyhton=实现调用自定义模块_面试题:spring中如何自定义@condition注解

在项目的开发过程中,经常会看到像@ConditionalOnBean、@ConditionalOnClass、@ConditionalOnResource等等类似这样的注解,这些注解的作用是按照一定的条件进行判断,满足条件的就给容器注册bean至于这些注解各有什么作用,这里不作具体讲解。

本篇主要是讲如何自定义@Conditional注解

假如现在有个需求,要求添加一个公用模块提供接口访问频率拦截功能,并且要有开关功能,随时可以关闭打开。

根据需求可定义一个属性frequency,如果其它项目引入此模块并在application.properties中设置frequency=true则打开,不配置或设置frequency=false则关闭。

1、 定义注解

添加@Conditional注解并加入匹配规则实现类

841b70d625448f0a2b8bfaa5b11900c1.png

2、 定义匹配规则业务实现类

该类必须继承SpringBootCondition并实现getMatchOutcome方法处理匹配业务规则。

fa1c432bf598c5a63bd3bcddd734152e.png

3、 定义Configuration类

将自定义的注解添加到该类上,并设置匹配条件,当spring开始处理此类时,根据上面定义的@Conditional调用OnFrequencyCondition类中的getMatchOutcome方法判断是否符合预期结果,如果匹配则会继续处理该类,如果不匹配则直接返回。

54a804de23b7cdbee30b9ad7e68979bf.png

注:该类还需要配置到spring.factories中,暴露给spring处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值