3

我正在尝试在构造时对对象执行一些 AOP,并找到了 IConstructorInterceptor,它非常适合我想要的东西,但它似乎不起作用(至少在 1.2 版中)。

我还查看了 IObjectPostProcessor 和 IInstantiationAwareObjectPostProcessor,但我找不到任何方法可以在构造时间前后对对象进行处理... IInstantiationAwareObjectPostProcessor 上的 PostProcessPropertyValues 方法很接近,但它只通过 setter 注入的属性不是构造函数 arg 值...

具体来说,我想要的是在实例化之后对对象的引用,同时对注入构造函数的对象的引用。有什么办法可以做到这一点,或者我最好的选择是切换到设置器注入并使用后处理器或 MethodInterceptor?

4

1 回答 1

0

AOP 提出调用拦截,而不是依赖注入。使用 Spring.Net,您可以使用 seters 或构造函数来执行任何依赖注入。对于您的帖子和评论,它应该可以工作。

在 Spring.Net 初始化管道上,第一步分析依赖图,执行任何对象创建并设置所有依赖项。之后,如果您的类实现“Spring.Objects.Factory.IInitializingObject”,则方法“void AfterPropertiesSet();” 叫做。其他执行方式是使用您的对象配置,您可以在对象节点上设置 init-method。此行为基于 IoC/DI 概念。

也许您需要创建一个特定的工厂对象。为此,您的工厂必须实现 Spring.Objects.Factory.IFactoryObject 接口。这有助于容器为您委派对象创建(此配置上的属性和构造函数适用于您的工厂)。

此致

于 2014-10-18T21:12:58.677 回答