我尝试了解如何为Kotlin的暂停功能创建@Around方面(例如,测量在此功能上花费的时间或自定义@Transactional方面):
@Timed("my-timer")
suspend fun test() {
println("before")
delay(50) // invokes ProceedingJoinPoint#proceed() before this line
println("after")
}
由于此函数具有暂停函数调用,因此@Around方面的procees函数将在delay()调用之前被调用。但是显然,我想衡量该功能所花费的全部时间。
什么是正确的解决方法?也许我可以以某种方式订阅该方法的最后一个续集,还是这样?
答案 0 :(得分:1)
我认为您可以轻松解决问题,如果要测量功能的执行时间,可以使用以下内置功能来实现:
val time = measureTimeMillis {
// yourSuperFunc()
}
此外,您可以使用measureNanoTime
。有关完整参考,请参见here。
答案 1 :(得分:0)
https://github.com/spring-projects/spring-framework/issues/22462对此进行了跟踪,很可能会在5.3中修复
@Transactional
也会发生相同的问题。