axon - Axon 事件处理程序和查询处理程序在 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 是将 's 移出@EventHandler
到单独的类中,并将它们保留在那里,而@QueryHandler
's 也在单独的类中。
我记得它正在使用java。我不确定我在这里缺少什么,但它似乎是一个 spring-kotlin 错误?任何提示将不胜感激,谢谢
解决方案
这很奇怪。我确信我的示例在类似的用例中可以正常工作
考虑使用构造函数来注入你的依赖项(你会避免var
and 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
推荐阅读
- python - X射线衍射成像算法和寻峰代码
- wpf - 如何在 WPF 中的对象列表中绑定集合
- f# - 缩进对错误消息(UserState)有最终决定权 - FParsec
- ios - 如何访问在闭包中创建的数组?
- compression - 如何证明/查看 ActiveMQ Artemis RemoteConnectionFactory 正在使用 compress-large-messages="true"?
- javascript - 我试图过滤然后对一组数字和字符串进行排序,但我的代码不起作用
- matlab - 错误分配的非单例右轴维度比非单例下标多
- python - 对数据帧字典中的每个数据帧进行排序
- c# - 将 JSON 反序列化为不同的类
- python - TypeError:“类名”对象不可调用