未能通过使用kotlin开放类构造函数示例化springbean属性

xfyts7mz  于 2021-07-15  发布在  Java
关注(0)|答案(0)|浏览(283)
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 为空。
你知道这是怎么回事吗?引擎盖下面是什么?
提前谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题