Spring 文档建议将 @Transactional 注释放在具体的类/方法而不是接口上。其原因已在 Stack Overflow 上多次介绍过,例如:
我应该将@Transactional 注释放在哪里:在接口定义或实现类中?
Spring Security @Secured 行为不同;大多数文档显示将注释放在界面上。事实上,无论您是注释接口还是具体类,无论您使用 JDK 还是 CGLib 代理,它似乎都有效。
这似乎是一个优越的解决方案。那么为什么不一致呢?对上述问题的一个答案表明对性能有影响......但性能肯定对安全性同样重要吗?!
以及@Secured 解决方案如何处理菱形继承问题(类实现 2 个接口都具有不同的@Secured 相同方法)?