gpt4 book ai didi

aop - 为什么基于纯继承的代理在 AoP 中不好

转载 作者:行者123 更新时间:2023-12-04 19:30:06 26 4
gpt4 key购买 nike

我在同一类中的方法之间进行方法调用并应用事务建议时遇到问题。

Spring Framework .NET 文档声明它支持基于组合和继承的代理,并且您可以强制 Spring 创建要实例化的基于继承的代理(没有目标的代理)。

然而,事实证明即使是“基于继承的代理”也不是他们所声称的那样。他们确实继承了目标类而不是它的接口(interface),但他们仍然使用目标对象。这导致了这样一个事实,即在同一类建议的方法之间的调用不适用。

诚然,Spring 可以使用 InheritanceBasedAopConfigurer 做一些努力来做到这一点,但您仍然必须列出要应用它的对象和要应用到它们的建议。

为什么 Spring 会千方百计避免真正基于继承的代理?我缺少什么反模式?

最佳答案

我可以看到多种原因:

1) 实现更复杂。 IoC 容器管理实例,要应用基于纯继承的代理,您需要处理类型。这就是“InheritanceBasedAopConfigurer”的作用:它在容器初始化之前更改类型。

2) 如果您希望 AOP 工作,您需要将您的方法标记为虚拟方法。这不直观。

3) 基于组合的代理强制通过接口(interface)进行设计,这是一种很好的做法。

关于aop - 为什么基于纯继承的代理在 AoP 中不好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com