Configuration Point in HiveMind
来源:互联网 发布:投行入门书籍 知乎 编辑:程序博客网 时间:2024/05/17 03:53
配置扩展点是HiveMind的一个核心概念。当你拥有一系列服务之后,对这些服务进行配置就是很自然的了。在HiveMind里,一个配置扩展点包含了一个无序元素的集合。其中的每个元素都是定义在某个模块里,另外每个模块都可以为一个对它可见的扩展点增加定义元素(HiveMind里面把这种定义称为contribution)。
服务扩展点(service point)和配置扩展点(configuration point)没有直接的联系,所以服务和配置同名也是很常见的(这种同名可能是有意的或无意的;服务和配置扩展点使用的是不同的命名空间)。服务和配置扩展点的联系只有在代码里面才能体现,服务关联了一个配置之后就可以随意操作它里面的所有元素。
现在,HiveMind里的配置扩展点可以是配置的数据是一个不可修改的List或一个不可修改的Map。区别这两种模式的方法是通过指定关键属性来区别,如果指定关键属性则会使用这个属性最为主键。
在系统启动的时候配置扩展点的数据是不会生成的,在第一次引用配置扩展点的数据(List或Map)时才会生成一个实际数据的代理。生成的代理结构和单例模式的代理模式很像,也分为内外两层。当实际访问时内层代理会改变外层代理的内层代理属性,使其指向实际的数据。和单例模式不同的是,配置扩展点生成的代理不是动态代码生成的,而是一个已经编写好的类。不动态生成的原因可能是因为此处的代理只需要涉及List和Map两种固定的类型,不需要根据运行时的情况动态的获取类类型并为其生成代理。下图展示了代理的类结构。
下面以List的size方法为例,通过连续两次访问该方法解释代理如何实现延迟读取的过程。
服务扩展点(service point)和配置扩展点(configuration point)没有直接的联系,所以服务和配置同名也是很常见的(这种同名可能是有意的或无意的;服务和配置扩展点使用的是不同的命名空间)。服务和配置扩展点的联系只有在代码里面才能体现,服务关联了一个配置之后就可以随意操作它里面的所有元素。
现在,HiveMind里的配置扩展点可以是配置的数据是一个不可修改的List或一个不可修改的Map。区别这两种模式的方法是通过指定关键属性来区别,如果指定关键属性则会使用这个属性最为主键。
在系统启动的时候配置扩展点的数据是不会生成的,在第一次引用配置扩展点的数据(List或Map)时才会生成一个实际数据的代理。生成的代理结构和单例模式的代理模式很像,也分为内外两层。当实际访问时内层代理会改变外层代理的内层代理属性,使其指向实际的数据。和单例模式不同的是,配置扩展点生成的代理不是动态代码生成的,而是一个已经编写好的类。不动态生成的原因可能是因为此处的代理只需要涉及List和Map两种固定的类型,不需要根据运行时的情况动态的获取类类型并为其生成代理。下图展示了代理的类结构。
- Configuration Point in HiveMind
- Configuration Point in HiveMind
- Schema in HiveMind
- Translator in HiveMind
- Schema in HiveMind
- Translator in HiveMind
- Singleton Service Model in HiveMind
- Threaded Service Model in HiveMind
- Pooled Service Model in HiveMind
- Threaded Service Model in HiveMind
- Pooled Service Model in HiveMind
- Singleton Service Model in HiveMind
- Primitive Service Model and Interceptor in HiveMind
- Primitive Service Model and Interceptor in HiveMind
- HDU3694Fermat Point in Quadrangle
- POINT IN CIRCLE 题解
- Point-In-Time recovery
- Point-In-Time recovery
- Primitive Service Model and Interceptor in HiveMind
- Threaded Service Model in HiveMind
- Pooled Service Model in HiveMind
- ARP学习心得一
- Singleton Service Model in HiveMind
- Configuration Point in HiveMind
- Schema in HiveMind
- Translator in HiveMind
- Tapestry介绍
- HiveMind介绍
- Friendly URLs in Tapestry
- 使用tapestry-prop提高Tapestry运行效率
- Tapestry4改进运行效率的实现方法
- Tapestry绑定的作用与实现