为什么用@Transactional 注释的方法必须是可覆盖的

Chr*_*aan 7 java overriding transactional spring-transactions spring-boot

我有以下代码:

/**
 * Restored deleted partner
 */
@Transactional
public void restorePartnerById(Integer id){
    // logic      
}
Run Code Online (Sandbox Code Playgroud)

当我使方法最终

/**
 * Restored deleted partner
 */
@Transactional
public final void restorePartnerById(Integer id){
    // logic      
}
Run Code Online (Sandbox Code Playgroud)

我收到一个编译错误,说明:

注释的方法@Transactional必须是可覆盖的

我四处寻找,但我无法理解为什么它必须能够覆盖,为什么该方法必须能够覆盖?

use*_*900 7

Spring 的Transactional用于创建覆盖方法的代理类:

围绕从 fooService bean 定义创建的对象创建一个事务代理。代理将使用事务性建议进行配置,以便在代理上调用适当的方法时