有以下情况:
@ConditionalOnBean(ServiceD.class)
@Component
class ServiceAImpl implements ServiceA {
private ServiceB serviceB;
private ServiceC serviceC;
private ServiceD serviceD;
public ServiceA(ServiceB serviceB, ServiceC serviceC, ServiceD serviceD) {
this.serviceB = serviceB;
this.serviceC = serviceC;
this.serviceD = serviceD;
}
}
interface ServiceD {
void doStuff();
}
@Component
class ServiceDImpl implements ServiceD {
private ServiceE serviceE;
public ServiceD(ServiceE serviceE) {
this.serviceE = serviceE;
}
@Override
public void doStuff() {
//...
}
}
Run Code Online (Sandbox Code Playgroud)
仅当存在 serviceD 实现时,我才需要加载 serviceA。
来自@ConditionalOnBean文档:“该条件只能匹配应用程序上下文到目前为止已处理的 bean 定义,因此,强烈建议仅在自动配置类上使用此条件。” 。
我的问题是:由于ServiceD是 …