SpringBoot - 自定义Condition

自定义Condition
摘要由CSDN通过智能技术生成

在SpringBoot的自动装配中,有很多的@Condition*注解用于我们按照不同的需求来装配Bean,这里我们示例一下如何自定义自己的Condition
其实我们可以参照已经提供的一些注解来实现即可

一、需求

配置文件中某个key对应的值有多个部分组成,之间使用英文逗号分隔(且成为各个组件),要求当配置文件中配置了某个组件的时候装配对应的Bean。
如:
hello.animals=cat,dog
当存在cat的时候,装配CatHelloService;当存在dog的时候,装配DogService,当同时存在cat,dog的时候,装配AnimalHelloService。

二、自定义Conditon注解

这个参照一下@ConditionOnProperty注解,定义如下:

package com.example.demo.selfcondition;

import org.springframework.context.annotation.Conditional;

import java.lang.annotation.*;

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional(OnHavingValueCondition.class)
public @interface ConditionOnHavingValue {

    /**
     * 属性名
     * @return
     */
    String name();

    /**
     * 需要包含的值
     * @return
     */
    String[] havingValue();

}

可以看到,@Conditional(OnHavingValueCondition.class)里面指定了一个Class,这个类就是用来进行匹配的。

三、创建匹配规则类

老规矩,匹配规则的编写,建议找存在的类去参考着写,我这里参考了OnPropertyCondition(用来解析@ConditionOnProperty的)

package com.example.demo.selfcondition;

import org.springframework.boot.autoc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值