首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axon事件处理程序和查询处理程序在kotlin中不能协同工作

Axon事件处理程序和查询处理程序在kotlin中不能协同工作
EN

Stack Overflow用户
提问于 2019-05-09 22:12:52
回答 1查看 422关注 0票数 0

代码:

代码语言:javascript
复制
@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

解决方案是将@EventHandler移出以分离类,并保持它们在那里,而@QueryHandler也在单独的类中。

我记得它和java一起工作。我不确定我在这里错过了什么,但它似乎是一个spring-kotlin错误?任何建议都将不胜感激,谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-09 22:55:06

这很奇怪。我确信我的示例对于类似的用例是正确工作的

https://github.com/idugalic/digital-restaurant/blob/master/drestaurant-apps/drestaurant-microservices-rest/drestaurant-microservices-rest-restaurant/src/main/kotlin/com/drestaurant/query/handler/RestaurantHandler.kt

考虑使用构造函数注入依赖项(避免使用varlateinit)

代码语言:javascript
复制
class UserProjectionQuery(private val repository: UserDocumentRepository, private val updateEmitter: QueryUpdateEmitter)

您还可以使用maven plugin打开所有kotlin-maven-plugin配置类:https://github.com/idugalic/digital-restaurant/blob/master/pom.xml#L177

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56061403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档