子接口中重写的事务注释方法是否仍将启动事务

| 考虑带有Spring的Java应用程序的这种情况:
public interface FooDao {
    @Transactional
    void save(Foo foo);
}

public interface SecureFooDao extends FooDao {
    @Secured({Role.ADMIN})
    void save(Foo foo);
}
我的问题是这个;会在SecureFooDao接口上调用save来启动事务,还是会忽略重写的方法注释?     
已邀请:
从Spring参考10.5.6使用@Transactional   小费      Spring建议您仅使用@Transactional注释对具体类(以及具体类的方法)进行注释,而不是对接口进行注释。您当然可以在接口(或接口方法)上放置@Transactional批注,但这仅在您使用基于接口的代理时才可以使用。 Java注释不是从接口继承的事实意味着,如果您使用的是基于类的代理(proxy-target-class = \“ true \”)或基于编织的方面(mode = \“ aspectj \”),则代理和编织基础结构无法识别事务设置,并且该对象也不会包装在事务代理中,这肯定是不好的。 因此,即使不被覆盖,它也只能在使用Spring-Aop-Proxies(我不推荐)的情况下起作用,而对于AspectJ或CGILib代理则无效! 但我不希望这项工作适用于在接口中重写的方法,即使对于Spring-Aop-Proxies也是如此。     

要回复问题请先登录注册