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

标签 java spring-boot overriding spring-transactions transactional

我有以下代码:

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

当我使方法最终化时

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

我收到一个编译错误:

Methods annotated with @Transactional must be overridable

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

最佳答案

Spring 的Transactional与创建覆盖方法的代理类一起工作:

create a transactional proxy around the object that is created from the fooService bean definition. The proxy will be configured with the transactional advice, so that when an appropriate method is invoked on the proxy

关于java - 为什么用@Transactional 注释的方法必须是可覆盖的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52715125/

相关文章:

Java:使用 Process() 调用 Perl 脚本:wsd.pl

java - 实体未映射

c++ - 为什么我的函数不跳过尝试解析为不兼容的模板函数,而是默认解析为常规函数?

linux - 如何从 Linux 上的文件夹同步最后修改的文件

java - Collections.max() 不正确的参数

java - Google App Engine 可以用于大规模并行计算吗?

Java MySQL事务和executeBatch

java - 如何在单个 JDBC 连接中执行多个 JPA 查询

java - MySQL密码包含 '=' Spring Boot密码错误问题

html - 覆盖当前 CSS 以添加一些填充