Package org.jfox.framework.component

Interface Summary
ActiveComponent 实现了该接口的 Component 会在部署时,立即实例化,实现了该接口,将强制 @Deploy(active=true) 使用 @Annotation 因为不能继承,所以无法强制约束子类型是 Active
Component Component 接口,只有实现该接口的组件才能部署到 Framework 中 普通的Component不具备跨模块调用能力,要想被其它模块调用,需要用 @Exported描述一个 business 接口
ComponentInitialization ComponentInitialization 提供了两个回调方法, 使得在组件构造之后,以及依赖注入完成之后进行额外的操作。 instantiated方法是唯一可以传入ComponentContext的回调方法, 如果Component需要使用ComponentContex,就必须实现该接口
ComponentUnregistration 组件被注销之前和注销之后的回调方法。 组件注册的时候,没有回调方法,因为此时组件还没有实例化。
Extention 实现某个ExtentionPoint的扩展 扩展在解析XML描述文件时,和ExtentionPoint关联 XML example:
ExtentionPoint 扩展点接口 扩展点是用来描述一个组件,有一些未知的功能,需要以后的组件和扩展实现 扩展点的好处是: 通过XML描述文件来描述扩展点及扩展,在解析XML部署文件时进行扩展点的关联, 此时实现扩展的组件,还没有实例化,等待真正要用到扩展实现的时候才实例化 扩展具体的调用逻辑由实现ExtentionPointSupportComponent的组件来完成 XML example:
FactoryComponent 工厂类型的Component,用来创建其它对象
InterceptableComponent 可进行方法拦截的组件。 实现该接口的组件,在执行器方法的时候,可以在方法执行前后,进行额外的操作,比如:进行日志记录 注意:该功能通过Java动态代理技术实现
RunnableComponent 可以为一个独立线程运行的 Component 需要手动的构造 Thread 运行 Component, Framework不会自动启动 Thread
SingletonComponent 实现了该接口的 Component 会在部署时,无论是否 @Server(singleton=false),都只有一个实例 使用 @Annotation 因为不能继承,所以无法强制约束子类型是 singleton
 

Class Summary
ASMClassLoader  
ComponentContext Component 上下文 ComponentContext 和 Component 是一对一的关系 ComponentContex 和 ComponentMeta 不一定是一对一的关系 对于Non Singleton Component,一个 ComponentMeta可能对应多个Component,也就对应多个ComponentContex
ComponentFactory ComponentFactory 负责实例化 Component,并完成 Constructor/Properties 依赖注射
ComponentMeta ComponentMeta 是组件的元数据对象,保留了组件所有的信息
ExtentionPoint.PropertyDefinition  
Module  
ModuleClassLoader Module ClassLoader 用来加载整个 Module 的类和资源 Module ClassLoader 初始化的时候,会使用ASM读取所有的Class,并记录Class的Annotation, 这样可以不需要 XML 配置文件,而直接根据 Annotation 发现 Component
Repository 用来存储所有的 ComponentMeta 所有的 ComponentMeta用一个 Map 保存,便于全局搜索, 同时每个Module都有自己的CompoentRepo对象,便于按 Module 隔离
SystemModule  
 

Enum Summary
Module.STATUS  
 

Exception Summary
ComponentInstantiateException  
ComponentInvocationException  
ComponentNotExportedException  
ComponentNotFoundException  
ComponentResolvedFailedException  
InvalidComponentIdException  
ModuleResolvedFailedException