【问题标题】:Spring.Net: Inject ApplicationContext / ObjectFactory itselfSpring.Net:注入 ApplicationContext / ObjectFactory 本身
【发布时间】:2010-10-08 12:00:24
【问题描述】:

有没有办法将当前作为依赖项执行的 IObjectFactory 或 ApplicationContext 传递给对象?例如

  <object id="SpringActionInvoker" type="xxx.SpringActionInvoker, xxx">
    <constructor-arg ref="reference_to_the_ApplicationContext_or_ObjectFactor_that_is_executing" />
  </object>

我想将它用于我的 Spring.Net 实现的 Asp.Net MVC ControllerActionInvoker,它将被注入到控制器中

public class SpringActionInvoker : ControllerActionInvoker
{
    private IObjectFactory objectFactory;

    public SpringActionInvoker(IObjectFactory objectFactory)
    {
        this.objectFactory = objectFactory;
    }

    protected override FilterInfo GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
    {
        //use objectFactory to inject dependencies into filters
    }
}

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-mvc-2 spring.net


    【解决方案1】:

    只需让你的类实现IApplicationContextAware,它应该可以让你自动注入当前的 IApplicationContext。

    【讨论】:

      【解决方案2】:

      怎么样:

      <object id="SpringActionInvoker" type="xxx.SpringActionInvoker, xxx" />
      

      然后:

      public class SpringActionInvoker : ControllerActionInvoker
      {
          protected override FilterInfo GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
          {
              IObjectFactory objectFactory = ContextRegistry.GetContext();
              //use objectFactory to inject dependencies into filters
          }
      }
      

      【讨论】:

      • 我想把 SpringActionInvoker 放在一个实用程序类中,我并不总是使用 app.config 和 ContextRegistry 创建 ObjectContext
      猜你喜欢
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多