我有一个类,它也是一个Spring组件。
@Component public class ComponentClass { // code }
我希望它只在某些条件下被创造出来。例如,必须满足以下条件中的至少一个:
BeanA
BeanB
foo
例如,@ConditionalOnBean({BeanA.class, BeanB.class})不做我想要的,因为它意味着这两个bean必须存在。
@ConditionalOnBean({BeanA.class, BeanB.class})
lp0sw83n1#
根据@lealceldeiro,@Rob Spoor和@Solar Mike在帖子评论中的建议,基于OR(而不是AND)条件的自定义注解是正确的解决方案。我的解决方案是扩展AnyNestedCondition的类:
AnyNestedCondition
public class ConditionalOnMyTerms extends AnyNestedCondition { ConditionalOnMyTerms() { super(ConfigurationPhase.REGISTER_BEAN); } @ConditionalOnBean(com.example.BeanA.class) static class BeanA {} @ConditionalOnBean(com.example.BeanB.class) static class BeanB {} @Profile("foo") static class fooProfile {} }
1条答案
按热度按时间lp0sw83n1#
根据@lealceldeiro,@Rob Spoor和@Solar Mike在帖子评论中的建议,基于OR(而不是AND)条件的自定义注解是正确的解决方案。
我的解决方案是扩展
AnyNestedCondition
的类: