Kotlin SpringWebFlux-如何以反应友好的方式转换下面的代码?
我想做的是将我的服务功能更改为一种反应友好的方式。由于我对反应式编程有点陌生,我不知道如何处理Mono中的业务逻辑。您可以使用Kotlin SpringWebFlux-如何以反应友好的方式转换下面的代码?,kotlin,reactive-programming,spring-webflux,Kotlin,Reactive Programming,Spring Webflux,我想做的是将我的服务功能更改为一种反应友好的方式。由于我对反应式编程有点陌生,我不知道如何处理Mono中的业务逻辑。您可以使用.map处理业务逻辑并重新映射到不同的输出。但是你的projectRepo甚至是被动的吗?如果您使用的是非反应式http/io/etc调用,那么进行反应式调用没有任何好处,您只会给自己带来维护和调试应用程序的困难code@kdev目前我正在将项目回购转换为反应式回购。你能给我一个例子,如何使用映射来处理业务逻辑和重新映射到不同的输出吗。正如kdev所指出的,你应该首先确保
.map
处理业务逻辑并重新映射到不同的输出。但是你的projectRepo
甚至是被动的吗?如果您使用的是非反应式http/io/etc调用,那么进行反应式调用没有任何好处,您只会给自己带来维护和调试应用程序的困难code@kdev目前我正在将项目回购转换为反应式回购。你能给我一个例子,如何使用映射来处理业务逻辑和重新映射到不同的输出吗。正如kdev所指出的,你应该首先确保你的回购是反应性的(它不应该阻止并返回流量),否则“转换为反应性”可能并不是你所认为的意思。
fun getProjectOverview(fiscalYear: Int): ProjectOverview? {
val projectList: List<Project> = projectRepo.findAllProjects(fiscalYear)
return if (projectList.isNotEmpty()) {
val totalProjects = projectList.size
val completedProjects = projectList.count { it.status == "COMPLETED" } //Add enums
val meanScheduledVariance = (projectList.sumBy { it.schedule_variance } / totalProjects)
val meanCostVariance = (projectList.sumBy { it.cost_variance } / totalProjects)
ProjectOverview(totalProjects, completedProjects, meanScheduledVariance, meanCostVariance)
} else {
null
}
}
Mono.justOrEmpty(projectService.getProjectOverview(fiscalYear)).toFuture()