我想在缺少具有特定名称的特定类类型时创建bean,但下面的ConditionalOnMissingBean
不起作用,因为值和名称不相关。
@ConditionalOnMissingBean(value=BeanName.class, name = "beanName")
答案 0 :(得分:2)
盒子没有这样的功能。但是,您可以使用自定义Conditional轻松实现它:
class MyCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
String[] beanNames = context.getBeanFactory().getBeanNamesForType(BeanName.class);
return Stream.of(beanNames).anyMatch(beanName -> beanName.equals("beanName"));
}
}
并将其添加到您的bean @Conditional(MyCondition.class)