【发布时间】:2009-07-16 17:34:16
【问题描述】:
我一直对一些我现在必须维护的应用程序坚持使用类代理而不是接口代理感到非常恼火。更具体地说,我有代理的服务层类,但我不能使它们成为最终的(即使它们应该是),因为出于某种原因,有人决定它们应该由实际的类代理,而不是通过接口(尽管所有无论如何,这些类中有接口)。
除了不必制作接口之外,还有什么真正的理由通过目标类进行代理,而不是在 Spring 的 AOP 配置中基于目标接口进行代理?
【问题讨论】:
我一直对一些我现在必须维护的应用程序坚持使用类代理而不是接口代理感到非常恼火。更具体地说,我有代理的服务层类,但我不能使它们成为最终的(即使它们应该是),因为出于某种原因,有人决定它们应该由实际的类代理,而不是通过接口(尽管所有无论如何,这些类中有接口)。
除了不必制作接口之外,还有什么真正的理由通过目标类进行代理,而不是在 Spring 的 AOP 配置中基于目标接口进行代理?
【问题讨论】:
只有当你真的希望类不改变时;通过接口代理会更强大,因为它更灵活,但是如果你真的想将事情锁定在一个单一的实现中,那么你会做按类代理。我可以想象一种情况,在这种情况下,人们可能希望保持对专有类解决方案的依赖,而不是让任何接口实现者成为可代理的,但这些对我来说似乎是边缘情况;我通常会假设使用界面。
【讨论】: