EMP的Service服务定义是
业务构件中一个非常灵活的概念组件,它可以是一个manager管理器,也可以用于封装一类resource资源,更可以作为loarder加载器装载特殊的定义文件,甚至大家非常熟悉的format、sqlDefine和tableDefine组件也都是service的形式存在于
EMP平台中。
通常情况下,绝大多数的Service会被定义在全局节点root context下面作为公共服务,而这样的组件就可能需要执行一种特定的初始化行为才可以发挥功用。相信大家熟悉的Service初始化方式莫过于利用Initializer了:EMP应用启动时调用Initializer执行初始化 代码,而Initializer则可以负责加载公共数据定义,以及调用公共服务的初始化方法。这是一种灵活却不够严谨的被动处理方式,使得Service的初始化缺乏一定的章法。
这里要介绍的是一种相对统一的初始化方式——实现initialize回调方法。这种概念有些类似spring中的回调接口,不过较前者定义方式严格:EMP组件工厂允许所有的service组件实现名为initialize(String factoryName)的初始化回调方法,而工厂会负责在首次加载sericve时调用该方法,而传入的参数factoryName是业务构件工厂的名称,通过它便可以获得业务构件工厂bizFactory实例,进而得到root context和web应用目录等资源,总之是大有可为啊!
通常情况下,绝大多数的Service会被定义在全局节点root context下面作为公共服务,而这样的组件就可能需要执行一种特定的初始化行为才可以发挥功用。相信大家熟悉的Service初始化方式莫过于利用Initializer了:EMP应用启动时调用Initializer执行初始化 代码,而Initializer则可以负责加载公共数据定义,以及调用公共服务的初始化方法。这是一种灵活却不够严谨的被动处理方式,使得Service的初始化缺乏一定的章法。
这里要介绍的是一种相对统一的初始化方式——实现initialize回调方法。这种概念有些类似spring中的回调接口,不过较前者定义方式严格:EMP组件工厂允许所有的service组件实现名为initialize(String factoryName)的初始化回调方法,而工厂会负责在首次加载sericve时调用该方法,而传入的参数factoryName是业务构件工厂的名称,通过它便可以获得业务构件工厂bizFactory实例,进而得到root context和web应用目录等资源,总之是大有可为啊!