我尝试编写自己的Camel组件,该组件应与Spring-Boot一起使用。
该组件可以正常工作,但是因为我希望它的工作方式类似于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.component
或camel.component.direct
的属性,或者这意味着其他含义?
我只想了解这部分代码,因为我想知道我的自定义组件是否需要它。