Kotlin 中的方法或类默认为 final。但是当我将 Service 类中的方法标记为 时@Transactional
,我意识到服务类及其所有方法都是开放的。因为要使@Transactional
方面发挥作用,服务类需要被代理,那么它必须是一个开放类,以便代理类可以扩展原始类。
(正如教程Kotlin 中的打开关键字所指出的,kotlin 默认是 final 的。
根据Spring文档AOP,因为我的服务类继承自抽象类而不是接口,所以代理是CGLIB代理。)
我是否误解了什么或者它是如何工作的?
@Service
class SomeService(...): SomeAbstractClass(...){
@Transactional
fun someMethod(...){...}
}