【问题标题】:Axon event handler and query handlers do not work together in kotlinAxon 事件处理程序和查询处理程序在 kotlin 中不能一起工作
【发布时间】:2019-05-09 14:12:52
【问题描述】:

代码:

@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 工作的。我不确定我在这里缺少什么,但它似乎是一个 spring-kotlin 错误? 任何提示将不胜感激,谢谢

【问题讨论】:

    标签: axon


    【解决方案1】:

    这很奇怪。我确信我的示例在类似的用例中可以正常工作

    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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      相关资源
      最近更新 更多