Axon 事件处理程序和查询处理程序在 kotlin 中不能一起工作
Axon event handler and query handlers do not work together in kotlin
代码:
@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
移出以将 class 分开并保持在那里,同时 @QueryHandler
也分开 class。
我记得它与 java 一起工作。我不确定我在这里遗漏了什么,但它似乎是一个 spring-kotlin 错误?
任何提示将不胜感激,谢谢
这很奇怪。我确定我的示例在类似的用例中可以正常工作
考虑使用构造函数注入您的依赖项(您将避免 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
代码:
@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
移出以将 class 分开并保持在那里,同时 @QueryHandler
也分开 class。
我记得它与 java 一起工作。我不确定我在这里遗漏了什么,但它似乎是一个 spring-kotlin 错误? 任何提示将不胜感激,谢谢
这很奇怪。我确定我的示例在类似的用例中可以正常工作
考虑使用构造函数注入您的依赖项(您将避免 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