[英]@Transactional and inheritance
我曾经在所有Spring服务(类)中添加@Transactional
注释。 然后我想:如果交易行为应该是一样的话,我真的必须这样做吗? (当然,如果它不应该,我们会将@Transational
与其他参数一起添加到方法中。)我试图找到一些关于@Transactional
继承的有用信息,阅读@Inherited
(看起来@Transactional
是@Inherited
) 。 我为以下示例尝试了rollbackFor
和noRollbackFor
,看起来GenericService
@Transactional
适用于doSmthSpecific
。
@Transactional
public abstract class GenericService {
public void doSmthGeneric() {
}
}
public class SpecificService extends GenericService {
public void doSmthSpecific() {
}
}
如果GenericService
是一个接口,我认为它不会起作用 。 我想这更像是“纠正我,如果我错了”的问题,我想知道是否真的可以将@Transactional
添加到超类中,如果我在这里遗漏了一些东西。 可以理解详细解释(或这种解释的链接)。
引用文档
您可以在接口定义,接口上的方法,类定义或类的公共方法之前放置@Transactional注释...
他们还建议不要注释接口/接口方法。
Spring建议您只使用@Transactional注释来注释具体类(以及具体类的方法),而不是注释接口。 您当然可以将@Transactional注释放在接口(或接口方法)上,但这只能在您使用基于接口的代理时按预期工作。
后来他们继续解释当你使用基于类的代理或aspectj编织时它不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.