在子接口中重写的事务性注解方法是否仍会启动事务
考虑使用 Spring 的 Java 应用程序的这种场景:
public interface FooDao {
@Transactional
void save(Foo foo);
}
public interface SecureFooDao extends FooDao {
@Secured({Role.ADMIN})
void save(Foo foo);
}
我的问题是这样的;在 SecureFooDao 接口上调用 save 会启动事务,还是会忽略重写方法注释?
Consider this scenario for a Java application with Spring:
public interface FooDao {
@Transactional
void save(Foo foo);
}
public interface SecureFooDao extends FooDao {
@Secured({Role.ADMIN})
void save(Foo foo);
}
My question is this; will calling save on a SecureFooDao interface start a transaction, or will it ignore the overriden methods annotations?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自Spring参考 10.5.6 使用@Transactional
因此,即使不重写,它也只能在您使用 Spring-Aop-Proxies(我不推荐)时才有效,但不适用于 AspectJ 或 CGILib 代理!
但我不希望这适用于在接口中重写的方法,甚至不适用于 Spring-Aop-Proxies。
From Spring reference 10.5.6 Using @Transactional
So even not overriden it will only work if you use Spring-Aop-Proxies (which I can not recommend), but not for AspectJ or CGILib Proxies!
But I do not expect that this work for an method that is overriden in an Interface, even not for Spring-Aop-Proxies.