在Kotlin 中,默认情况下,类和成员都是最终的。
为了使代理库(CGLIB,javaassist)能够代理一个方法,必须将其声明 为非最终类 且在 非最终
类中因为这些库通过子类实现代理。将您的控制器方法更改为:
@RequestMapping("{id}", method = arrayOf(RequestMethod.GET))@Cacheable(cacheNames = arrayOf("regions"))open fun get(@PathVariable id: Long): RegionResource { return this.service.get(id)}
您可能会在控制台中看到有关RegionController
方法不接受代理的警告。
plugins.html#spring-support)
Kotlin团队已经意识到了这一困难,并创建了一个插件来标记标准AOP代理候选人,例如
@Component使用
open。
您可以在以下位置启用插件
build.gradle:
plugins { id "org.jetbrains.kotlin.plugin.spring" version "1.1.60"}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)