为什么用@Transactional注释的方法必须可重写

时间:2018-10-09 07:04:51

标签: java spring-boot override spring-transactions transactional

我有以下代码:

/**
 * Restored deleted partner
 */
@Transactional
public void restorePartnerById(Integer id){
    // logic      
}

当我将方法定型为

/**
 * Restored deleted partner
 */
@Transactional
public final void restorePartnerById(Integer id){
    // logic      
}

我收到一个编译错误,指出:

  

@Transactional注释的方法必须可重写

我四处走走,但我不知道为什么它必须具有重写能力,为什么该方法必须具有重写能力?

2 个答案:

答案 0 :(得分:3)

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

  

围绕从fooService bean定义创建的对象创建事务代理。代理将配置有交易建议,以便在代理

上调用适当的方法时

答案 1 :(得分:0)

我认为将方法更改为final与@Trasacational不相关,请参见此链接@Trasactional的工作方式 http://www.codingpedia.org/jhadesdev/how-does-spring-transactional-really-work/