@ConditionalOnExpression属性是否存在

我有一个应用程序.yml,它有一个属性,它采用一个数组/列表,如下所示


tokens:

  token: 

    -  name: one

       site: chicago

  token:

    - name: two

      site: 'st. louis'

我如何使用这样,只要在 application.yml 中存在令牌就足够了?@ConditionalOnExpression


我试过了 和 .它不起作用。甚至官方文档也建议使用列表/数组,它不会很好地工作。@ConditionalOnProperty("tokens")@CondtionalOnProperty(prefix="tokens", value= {"token"}


繁华开满天机
浏览 230回答 2
2回答

大话西游666

您可以使用@Conditional(YourCondition.class)从文档中引用:必须匹配才能注册组件的单个条件。在bean定义将要注册之前,立即检查条件,并根据此时可以确定的任何标准自由否决注册。插图:@Conditional(MyCondition.class)@Controllerpublic 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

jeck猫

@Faraz杜兰尼尝试这个概念,你会得到...@Component@EnableConfigurationProperties@ConfigurationProperties(prefix = "tokens")public class ServiceClass{private String token;   ...}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java