Понимание групповых условий в Camel SpringBoot AutoConfiguration - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь написать свой собственный Camel-Component, который должен работать с Spring-Boot.

  • Spring-Boot-Version: 2.1.x-RELEASE
  • Camel-версия: 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"));
    }
}

Пока я понимаю, что этот класс является своего рода условием для весенней загрузки, но я не понимаю, что выражает это условие. Должно ли быть свойство под названием camel.component или camel.component.direct или это означает что-то еще?

Я просто хочу понять эту часть кода, потому что я хочу знать, нужно ли мне это для моего пользовательского компонента или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...