了解Camel SpringBoot自动配置中的GroupConditions

时间:2019-06-25 14:30:10

标签: java spring-boot apache-camel

我尝试编写自己的Camel组件,该组件应与Spring-Boot一起使用。

  • Spring-Boot-Version:2.1.x-RELEASE
  • 骆驼版本:2.22.x

该组件可以正常工作,但是因为我希望它的工作方式类似于direct组件(有一些补充),所以我的实现或多或少地基于direct组件的实现。

因为我现在希望在Spring-Boot-Starter中使用我的组件,所以我试图了解如何在direct组件中进行自动配置,在那里我看到了以下部分:

@Conditional({ConditionalOnCamelContextAndAutoConfigurationBeans.class,
        DirectComponentAutoConfiguration.GroupConditions.class})
public class DirectComponentAutoConfiguration {
....
    static class GroupConditions extends GroupCondition {
        public GroupConditions() {
            super("camel.component", "camel.component.direct");
        }
    }

超类GroupCondition如下所示:

public class GroupCondition extends SpringBootCondition {
    private final String group;
    private final String single;

    public GroupCondition(String group, String single) {
        this.group = group;
        this.single = single;
    }

    @Override
    public ConditionOutcome getMatchOutcome(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
        final ConditionMessage.Builder message = ConditionMessage.forCondition(this.single);
        final Environment environment = conditionContext.getEnvironment();

        return HierarchicalPropertiesEvaluator.evaluate(environment, this.group, this.single)
            ? ConditionOutcome.match(message.because("enabled"))
            : ConditionOutcome.noMatch(message.because("not enabled"));
    }
}

到目前为止,我了解该类是spring-boot的某种条件,但我不理解该条件表示什么。 是否必须有一个名为camel.componentcamel.component.direct的属性,或者这意味着其他含义?

我只想了解这部分代码,因为我想知道我的自定义组件是否需要它。

0 个答案:

没有答案