前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HiveMind 和 Spring 的比较(之二)

HiveMind 和 Spring 的比较(之二)

作者头像
田春峰-JCJC错别字检测
发布2019-02-14 11:46:09
3470
发布2019-02-14 11:46:09
举报

紧接上文。 从上文的 HiveMind 和 Spring 总体架构图片你可以看出 两者的结构差异很大。首先,Spring提供了一套完整的组件,从页面展示的MVC框架到后台的数据库ORMapping等统统都有,其中有些是Spring自有的,有些则提供了集成第三方优秀组件的接口。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

相比之下HiveMind就单薄多了。我第一眼看到HiveMind的架构图片的时候想到了 微软COM组件模型的图片。 如下:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

这里贴出COM的图片来,是为了更好的比较和说明HiveMind的结构。

HiveMind和Spring的不同在于,HiveMind使用以组件服务为导向的架构。也就是说每一个Java类提供一个服务( Service point ),给这个服务起名字注册到HiveMind Registry后,客户应用程序就可以使用这个服务名字来使用Java类提供的服务。(见后面的代码)

了解COM原理的读者可能都知道,在COM组件接口不变的情况下,即使COM的算法实现完全发生变化,也丝毫不受影响客户端的使用。这也就是提倡的面向接口的编程。从这一点上来说HiveMind和COM如出一澈。Spring 框架没有这个基于服务的特性。(下文专门分析Sprign的实现原理)。

HiveMind另一个特点是借鉴Eclipse插件的实现方式。在HiveMind 术语中你常会看到如下XML定义:

<module id=“..“>

<service-point id=“..“ interface=“..“ >

<configuration-point id=“..“ >

等等这样的定义。

在HiveMind中你可以把相关配置文件放在多个Xml文件中而不像Spring那样放在一个文件中。只要把名为:hivemodule.xml 的文件放在ClassPath中HiveMind就可以识别到。

上面提到的 面向服务和面向配置的特性正是HiveMind区别于Spring的地方。

说了这么多区别,并不是要把HiveMind和Spring对立起来,其实HiveMind是可以和Spring紧密继承使用的。

我现在的感觉有点类似于:COM组件和IIS的关系,毕竟Spring已经很强大了。

看个例子吧:

用HiveMind来实现AOP的拦截方法执行的效果:

配置文件:

hivemodule.xml:

代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制

Java代码:

Adder.java:

代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制

AdderImpl.java:

代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制

HiveMain.java:

代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制

运行后的效果如下:

代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制

上面有个小细节:就是HiveMind中对函数参数的处理非常好,可读性非常高。

       待续

    田春峰  ┏━━━━━━━━━━┓ ┏━┓┃中秋快乐┃┏━┓ ┃逢┃┗━━━━┛┃迎┃ ┃千┃ ━  ━━ ┃中┃ ┃禧┃━┳━┏━┓┃秋┃ ┃举┃┃┃┃┗━┛┃佳┃ ┃世┃┃┃┃┏┳┓┃节┃ ┃共┃ ┃ ┃╋┃┃同┃ ┃欢┃ ┛ ┗┻┛┃庆┃ ┗━┛       ┗━┛  

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2004年09月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档