我有这种技术疑问......
如果我有一个界面
public interface test{
@Transactional
public void mymethod();
}
然后我有我的实现
public class testImpl implements test{
@Override
public void mymethod(){
//..do something
}
}
由于我正在使用@Override,我的注释@Transactional,@ Lock还是其他任何持久的我的实现?或者将通过接口方法覆盖而不添加注释中的任何特殊行为?
答案 0 :(得分:0)
我读过这个问题的最佳答案:
请参阅此链接https://stackoverflow.com/a/5551597/3447634
回复的副本: "在我看来,这完全取决于您的应用程序架构。这取决于你如何代理你的课程。如果您的应用设置为" proxy-target-class =' true'" (在您的应用程序上下文中,如果您注释接口,则不会获取@Transactional信息。
查看Spring文档 - "提示"了解更多信息。
Spring建议您只使用@Transactional注释来注释具体类(以及具体类的方法),而不是注释接口。您当然可以将@Transactional注释放在接口(或接口方法)上,但这只能在您使用基于接口的代理时按预期工作。 Java注释不是从接口继承的事实意味着如果您使用基于类的代理(proxy-target-class =" true")或基于编织的方面(mode =" aspectj& #34;),然后代理和编织基础设施无法识别事务设置,并且对象不会被包装在事务代理中,这将是非常糟糕的。"