javashop组件开发指南:概念解释, 组件:可以理解为是插件,功能点的一个集合。 插件:是指具体的某个功能。插件桩:是负责调用插件。事件:是要决定什么时候执行插件 一个组件是由多个插件组成,一个插件有多个插件桩,一个插件桩对应多个插件,插件和插件桩是多对多关系。
                          javashop组件开发指南

1、      概念解释

         组件:可以理解为是插件,功能点的一个集合。

         插件:是指具体的某个功能。

         插件桩:是负责调用插件。

         事件:是要决定什么时候执行插件

         一个组件是由多个插件组成,一个插件有多个插件桩,一个插件桩对应多个插件,插件和插件桩是多对多关系。

     

2、组件开发

         1、新建组件项目,定义为demo组件。如图:

    javashop组件开发指南_插件

javashop组件开发指南_组件_02

组件的包名必须符合一定的规则,EOP机制才会识别这些组件。

以com.enation开头。例:

com.enation.app.groupbuy.component     组件包

com.enation.app.groupbuy.component.plugin        插件包

2、          建立组件类

如图:

 javashop组件开发指南_java_03

▪  2.1、实现IComponent接口

组件类必须实现

此接口的install和uninstall方法在组件被安装和卸载时会被调用,你可以在需要时在此执行sql创建数据库结构,或者作一些你想做的事。

▪  2.2、用@Component注解来标记

EOP组件机制使用Spring自动化扫描注解的机制来完成组件的扫描的,应此需要使用@Component注解来标记此组件类。要确保此类的beanid要保持唯一

 

3、          建立component.xml文件

         component.xml文件位于和上述组件同级目录

         用于描述组件信息及组件包涵的插件

         我们暂时只定义组件本身的配置,插件稍后配置,如图

 javashop组件开发指南_javashop_04

 

<?xml version="1.0" encoding="UTF-8"?>

<component name="demo组件"  version="1.0" javashop_version="3.0.0" author="javashop">

</component>

验证组件是否正常

         3.1、添加依赖,将我们的组件添加到b2b2c中,如图

 javashop组件开发指南_component_05

 

         3.2、启动项目查看组件是否可以正常安装 卸载 启用 停用

 javashop组件开发指南_java_06

 

执行安装和卸载分别打印出安装 卸载方法

 javashop组件开发指南_组件_07

 

组件开发成功!

 

4、          开发插件(实现会员登录发短息提醒)

插件是基于事件机制来运转的

4.1、插件必须继承于AutoRegisterPlugin 且选择性实现IMemberLoginEvent

javashop组件开发指南_组件_08

 

注意插件类必须符合两个规范:

▪  1、继承AutoRegisterPlugin

继承此类才成为一个EOP的插件,系统会自动识别后,将其插入相应的业务插件桩中,将来在业务被调用。

 

▪  2、用@Component注解来标记

同样地,EOP插件机制使用Spring自动化扫描注解的机制来完成插件的扫描的,应此需要使用@Component注解来标记此插件类。

      4.2、配置component.xml   如图:

javashop组件开发指南_javashop_09

 

<plugins>

      <plugin name="demo插件" id="smsSendPlugin">

          <bundle id="memberPluginBundle"></bundle>

      </plugin>

</plugins>

 

nam:插件的名称

id :具体的插件beanid

bundle:插件桩

各应用事件及插件桩集合

http://javamall.com.cn/help/index.php/EOP

各应用事件及插件桩集合

启动,运行程序,将此组件安装并执行登录操作

javashop组件开发指南_组件_10

javashop组件开发指南_component_11

 由上图看出我们的此插件已经被正确执行!