Castle Windsor中文文档

组件是如何创建的

当从Windsor容器请求组件时,容器经历几个步骤以提供实例。右边的图像描绘了这些步骤的更重要的方面。我们将在这里更详细地讨论它们。

:此页面有两个目的。首先,它说明了当一个组件 实例不管它以何种lifestyle被请求时,Windsor做了些什么。此外,它还描述了组件生命周期的第一部分,即它的起源和诞生(或以技术术语来说,是什么导致实例被创建,以及如何创建)。请记住,这不是一个实例的整个生命周期,这只是第一步。要了解整个生命周期,一直到组件的死亡,请参阅关于实例生命周期instance lifecycle的页面。

定位处理程序(Handler)

请求组件时,容器执行的第一步是检查请求的组件是否已注册到容器中。容器询问它的组件命名子系统, 如果找不到组件,容器将试图将它懒注册,如果不成功,就会抛出ComponentNotFoundException

假设可以找到正确的组件,容器将轮询它的处理程序并要求它解析组件实例。

处理程序(Handler)的作用

处理程序做了一些事情:

  • 它调用它关联的所有ComponentResolvingDelegate,在解析实际开始之前提供影响解析方式的机会。例如,当传递给流式注册APIDynamicParameters方法的委托被调用时。
  • 如果没有提供内联参数,则会检查组件及其所有必需的依赖关系是否可以解决。如果不是,则抛出HandlerException
  • 否则,处理程序要求其lifestyle管理器解决这个问题。

生存形式(lifestyle)管理器的作用

lifestyle管理器的作用相对简单。如果它有一个组件实例可以重用,它将获取它并立即返回到处理程序。如果没有,它会要求它的组件激活器(component-activators)为它创建一个。

组件激活器(component activator)的作用

组件激活器(component activator): 组件激活器负责创建组件的实例,每种激活器有不同的方式来实现这一点。当您通过UsingFactoryMethod创建组件时,您提供的委托将被用来创建实例。工厂支持工具(Factory Support Facility)远程工具(Remoting Facility)拥有自己的一组激活器,可执行组件的自定义初始化。

大多数时候你会使用默认组件激活器DefaultComponentActivator,它做了以下几点:

  • 通过调用构造函数来实例化组件。 构造函数是如何选择的:要了解默认组件激活器如何选择构造函数,请看这里
  • 当创建实例时,它将解析组件的属性依赖关系。如何注入属性:要了解默认组件激活器如何将依赖注入属性,请参阅此处
  • 当组件完全创建时,它会调用组件的所有佣金问题commission concerns
  • 在内核上触发ComponentCreated事件。
  • 将实例返回到lifestyle管理器。

处理程序(handler), 释放策略(release policy) 和 容器(container)做了什么

如果需要的话,Lifestyle管理器可以将实例保存到上下文缓存中,以便以后可以重用,并将其传递给处理程序。处理程序可以选择要求释放策略(release policy)来跟踪组件,如果允许和需要的话,然后将其传递给容器,然后将其返回给用户。

参阅

posted @ 2019-06-18 10:40  下一个起点  阅读(94)  评论(0)    收藏  举报