使用@Transactional 注释class 是否与将其所有方法注释为@Transactional 相同?

Is annotating a class with @Transactional the same as annotating all its methods as @Transactional?

如果我像这样用 @Transactional 注释 class:

@Transactional
class MyService { ... }

这是否与用 @Transactional 注释其所有方法一样:

class MyService {
    @Transactional
    void myFunction() { ... }
}

还有其他一些事情需要考虑,例如:这如何传播到子 classes、内部 classes 和静态方法?

来自 documentation

…The result is that all methods are wrapped in a transaction and automatic rollback occurs if a method throws an exception (both Checked or Runtime exceptions) or an Error…

所以是的,它是一样的。

how does this propagate to sub classes

是继承的-但建议只注解具体classes

inner classes

据我所知不是。
如果有的话,我只会将 POJO 定义为内部 class - 业务逻辑 总是进入服务

static methods

据我所知不是