open class XService( // this is open because spring-cglib
val yService: YService
) {
fun doX() {
yService.doY()
}
}
interface YService {
//method definitions
}
正如你从上面看到的 XService
取决于 YService
接口。我试图通过提供两个不同的实现来示例化两个不同的bean YService
接口,比如说 AService:YService
以及 BService:YService
.
@Configuration
class SomeBeans{
@Bean
fun firstXService(aService:AService):XService {//AService is a @Service annotated class, so it is perfectly being injected here, aka argument is not null
return XService(
yService = aService
)
}
@Bean
fun secondXService(bService:BService):XService {//BService is a @Service annotated class, so it is perfectly being injected here, aka argument is not null
return XService(
yService = bService
)
}
}
上面是完美的示例化bean,我可以看到这两个bean位于上下文中。
但是当我碰巧运行一些集成测试(使用spring上下文)时,每次调用 xService.doX()
失败的原因是 NPE:null
,这是因为 yService
为空。
你知道这是怎么回事吗?引擎盖下面是什么?
提前谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!