Castle Windsor中文文档
组件是如何创建的
当从Windsor容器请求组件时,容器经历几个步骤以提供实例。右边的图像描绘了这些步骤的更重要的方面。我们将在这里更详细地讨论它们。
注:此页面有两个目的。首先,它说明了当一个组件 实例不管它以何种lifestyle被请求时,Windsor做了些什么。此外,它还描述了组件生命周期的第一部分,即它的起源和诞生(或以技术术语来说,是什么导致实例被创建,以及如何创建)。请记住,这不是一个实例的整个生命周期,这只是第一步。要了解整个生命周期,一直到组件的死亡,请参阅关于实例生命周期instance lifecycle的页面。
定位处理程序(Handler)
请求组件时,容器执行的第一步是检查请求的组件是否已注册到容器中。容器询问它的组件命名子系统, 如果找不到组件,容器将试图将它懒注册,如果不成功,就会抛出ComponentNotFoundException。
假设可以找到正确的组件,容器将轮询它的处理程序并要求它解析组件实例。
处理程序(Handler)的作用
处理程序做了一些事情:
- 它调用它关联的所有
ComponentResolvingDelegate,在解析实际开始之前提供影响解析方式的机会。例如,当传递给流式注册API的DynamicParameters方法的委托被调用时。 - 如果没有提供内联参数,则会检查组件及其所有必需的依赖关系是否可以解决。如果不是,则抛出
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)来跟踪组件,如果允许和需要的话,然后将其传递给容器,然后将其返回给用户。

浙公网安备 33010602011771号