代码:
@Component
open class UserProjectionQuery {
@Autowired
private lateinit var repository: UserDocumentRepository
@Autowired
private lateinit var updateEmitter: QueryUpdateEmitter
@QueryHandler
fun handle(query: QueryUserIdForUsername): String? {
//stuff
}
@EventHandler
fun on(evt: UserAuthenticated) {
//stuff
}
}
显然,它不会注入我的存储库,也不会更新发射器。
事件处理程序将创建AnnotationQueryHandlerAdapter
而不是AnnotationEventHandlerAdapter
。
解决方案atm是将@EventHandler
移到单独的班级中,同时将@QueryHandler
放在单独的班级中。
我记得它正在使用Java。我不确定我在这里缺少什么,但似乎是一个弹簧kotlin的错误? 任何提示将不胜感激,谢谢
答案 0 :(得分:2)
这很奇怪。我确定我的示例可以在类似的用例中正常工作
考虑使用构造函数注入依赖项(您将避免使用var
和lateinit
)
class UserProjectionQuery(private val repository: UserDocumentRepository, private val updateEmitter: QueryUpdateEmitter)
您还可以使用maven插件kotlin-maven-plugin
打开所有Spring配置类:https://github.com/idugalic/digital-restaurant/blob/master/pom.xml#L177