为了账号安全,请及时绑定邮箱和手机立即绑定

@ConditionalOnExpression属性是否存在

@ConditionalOnExpression属性是否存在

繁华开满天机 2022-09-01 18:00:42
我有一个应用程序.yml,它有一个属性,它采用一个数组/列表,如下所示tokens:  token:     -  name: one       site: chicago  token:    - name: two      site: 'st. louis'我如何使用这样,只要在 application.yml 中存在令牌就足够了?@ConditionalOnExpression我试过了 和 .它不起作用。甚至官方文档也建议使用列表/数组,它不会很好地工作。@ConditionalOnProperty("tokens")@CondtionalOnProperty(prefix="tokens", value= {"token"}
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

您可以使用@Conditional(YourCondition.class)

文档中引用:

必须匹配才能注册组件的单个条件。在bean定义将要注册之前,立即检查条件,并根据此时可以确定的任何标准自由否决注册。

插图:

@Conditional(MyCondition.class)

@Controller

public class Box{

   ...

}



public class MyCondition implements Condition{


    @Override

    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {

        Environment env = context.getEnvironment();

        return null == env.getProperty("tokens.token[0].name");

    }

}

此处,在缺少属性的情况下将返回 null。en.getProperty


查看完整回答
反对 回复 2022-09-01
?
jeck猫

TA贡献1909条经验 获得超7个赞

@Faraz杜兰尼尝试这个概念,你会得到...


@Component

@EnableConfigurationProperties

@ConfigurationProperties(prefix = "tokens")

public class ServiceClass{


private String token;

   ...

}


查看完整回答
反对 回复 2022-09-01
  • 2 回答
  • 0 关注
  • 226 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信