【问题标题】:Spring.NET & Constructor InterceptorsSpring.NET 和构造函数拦截器
【发布时间】:2014-10-19 05:12:58
【问题描述】:

我正在尝试在构造时对对象执行一些 AOP,并找到了 IConstructorInterceptor,它非常适合我想要的东西,但它 doesn't appear to work(至少在 1.2 版中)。

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

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

【问题讨论】:

  • 你有没有得到这个工作?
  • 没有。不幸的是,当前版本中没有该功能(也没有在即将到来的 1.3 中),而且我从来没有找到比我上面提到的更好的解决方法。

标签: .net constructor aop spring.net


【解决方案1】:

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

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

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

最好的问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    相关资源
    最近更新 更多