无法通过使用 kotlin 开放类构造函数实例化 spring bean 属性

问题描述

open class XService( // this is open because spring-cglib
    val yService: YService 
) {
    fun doX() { 
       yService.doY()
    }
}

interface YService {
  //method definitions
}

从上面可以看出,XService 依赖于 YService 接口。我试图通过提供 YService 接口的两个不同实现来实例化两个不同的 bean,比如说 AService:YServiceBService: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,aka argument is not null
     return XService(
       yService = bService
     )
   }

}

上面是完美实例化bean,可以看到这两个bean都位于上下文中。

但是当我碰巧运行一些集成测试(使用 spring 上下文)时,每次调用 xService.doX() 都会失败并显示 NPE:null,这是因为 yService 为 null。

知道这里发生了什么吗?引擎盖下发生了什么?

提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...