Я пытаюсь написать свой собственный 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
или это означает что-то еще?
Я просто хочу понять эту часть кода, потому что я хочу знать, нужно ли мне это для моего пользовательского компонента или нет.