我想创建一个使用特殊Bean的Condition。有可能吗?
即。像这样的东西:
@Component
public class MyCondition implements Condition{
@Autowired
MyBean myBean;
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return myBean.isTrue();
}
}
即。在某些情况下,我必须得到一个数据库会话bean并检查数据库中的某些内容,然后才能说出条件是真还是假。
我需要将该条件与@Conditional
注释一起使用。
即:
@Conditional(MyCondition.class)
@Configuration
public class Config{
//...
}
答案 0 :(得分:1)
不,你不能。正如文档中所述,这是因为它可能
导致过早的bean实例化,违反容器并导致意外的副作用
所以在你的情况下,如果你的条件引用了一个DB bean,那么在容器能够满足它的前提条件之前,DB可能会被实例化。