一、service的定义
1、概述
在hivemind中,一个service是一个简单的实现特定接口的对象,你可以提供此接口的核心实现,使用者可以通过实现此接口来覆盖你的实现。模块的定义可以包含<service-poit>元素来定义服务,一个模块可以包含任意多的服务。
2、创建模式
Service有四种创建模式:primitive(主要的)、singleton(单例的)、threaded(线程的)和pooled(池化的)。在primitive和singleton模式中,每一个服务最终只会生成一个实例。在threaded和pooled模式中,同时可能有多个实例,但是每个线程只会有一个实例。各个模式的定义如下:
Primitive:服务在第一次参考时被构造
Singleton:服务在第一此调用接口的方法时被构造
Threaded:第一次调用接口的方法时构造,并绑定到当前线程
Pooled:同Threaded,但服务的实现被储存在池中
Hivemind使用代理模式来创建实例,除了primitive创建模式。代理类实现了服务接口,按需要构造实际的实现类。
3、定义方法
一个服务包含一个实现类和任意多的拦截类,拦截类可以实现日志、安全、事务定义和性能观测等功能。一般一个服务代理将首先创建,当代理类的方法被调用时,实际的服务实现类被构造和配置,所有的拦截类被创建。
定义如下:
<service-point id="MyService" interface="com.myco.MyServiceInterface">
<create-instance class="com.myco.impl.MyServiceImpl"/>
<interceptor service-id="hivemind.LoggingInterceptor"/>
</service-point>
属性定义如下表所示
属性 |
类别 |
必需 |
描叙 |
id |
字符串 |
是 |
服务扩展点的简单id,全写的id通过前边加上模块id来获得 |
interface |
类名 |
否 |
此服务扩展点支持的接口的名字,如果没有定义,则默认为服务id,全协的名称通过前边加上模块的报名来获得 |
parameters-schema-id |
字符串 |
否 |
用来参考模块中定义的schema,schema定义了此服务需要用到的参数,当服是通过ServiceImplementationFactory或者 ServiceInterceptorFactory.类定义时。 |
parameters-occurs |
unbounded | 0..1 | 1 | 1..n | none |
否 |
参数元素允许的数量:
- unbounded: 无穷
- 0..1: 可选
- 1 (default) :必须
- 1..n: 至少一个
- none:不允许
|
服务定义中可以包含 <create-instance>、 <interceptor>、<invoke-factory> 、<parameters-schema>定义。
4、服务的创建
服务可以通过两种方式来构造实例创建和实现工厂,实例创建表现为<create-instance>元素,实现工厂表现为<invoke-factory>元素。
- <create-instance> 直接实例化一个接口的实现类
属性 |
类别 |
必需 |
描叙 |
class |
类名 |
是 |
用来实例化的类名,此类中的属性不需要额外配置 |
model |
primitive | singleton | threaded | pooled |
否 |
指定构造模式,singleton是默认模式 |
- <invoke-factory> 通过另一个服务来实例化一个接口的实现类,它包含一个service-id属性,定义了一个实现ServiceImplementationFactory接口的服务。通过此方式创建的service将通过service的接口类型自动绑定各个服务。
属性 |
类别 |
必需 |
描叙 |
service-id |
字符串 |
否 |
工厂服务的id,可以是统一模块中的简单id,也可以是全写的id。如果没有确定,默认为hivemind.BuilderFactory服务 |
model |
primitive | singleton | threaded | pooled |
否 |
指定构造模式,singleton是默认模式 |
5、拦截器的定义
拦截器使用<interceptor>来表示,属性service-id标识一个服务拦截器工厂服务,工厂服务实现了ServiceInterceptorFactory接口。
属性 |
类别 |
必需 |
描叙 |
service-id |
字符串 |
是 |
服务的id |
before |
字符串 |
否 |
一个服务id的列表,这些服务需要在此服务后执行 |
after |
字符串 |
否 |
一个服务id的列表,这些服务需要在此服务前执行 |
name |
字符串 |
否 |
用来排序,没有指定的话,默认为service-id |
服务id的列表以逗号分隔每个服务。
6、工厂参数的定义
<invoke-factory>可能需要取得一些参数来配置需要的信息,所以定制工厂的参数是必要的。Schema用于统一定义数据的表现形式,针对参数的定义有个具体的parameters-schema来使用,parameters-schema不象shema那样可以单独定义,它只能出现在<service-point>定义中,而且跟parameters-schema-id的定义互斥,两者只能出现一个。
分享到:
相关推荐
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于java的驾校收支管理可视化平台的开题报告
时间序列 原木 间隔5秒钟 20241120
毕业设计&课设_基于 Vue 的电影在线预订与管理系统:后台 Java(SSM)代码,为毕业设计项目.zip
基于springboot课件通中小学教学课件共享平台源码数据库文档.zip
基于java的网上购物商城的开题报告
Delphi人脸检测与识别Demo1fdef-main.zip
基于java的咖啡在线销售系统的开题报告
基于java的自助医疗服务系统的开题报告.docx
内容概要:本文档全面介绍了Visual Basic(VB)编程语言的基础知识和高级应用。首先概述了VB的基本特性和开发环境,随后详细讲述了VB的数据类型、变量、运算符、控制结构、数组、过程与函数、变量作用域等内容。接着介绍了窗体设计、控件使用、菜单与工具栏的设计,文件操作、数据库访问等关键知识点。最后讨论了VB的学习方法、发展历史及其在桌面应用、Web应用、数据库应用、游戏开发和自动化脚本编写等领域的广泛应用前景。 适合人群:初学者和中级程序员,尤其是希望快速掌握Windows桌面应用开发的人群。 使用场景及目标:①掌握VB的基础语法和开发环境;②学会使用VB创建复杂的用户界面和功能完整的应用程序;③理解数据库操作、文件管理和网络编程等高级主题。 其他说明:Visual Basic是一种简单易学且功能强大的编程语言,尤其适合用于开发Windows桌面应用。文中不仅覆盖了基础知识,还包括了大量的实用案例和技术细节,帮助读者快速提升编程技能。
基于java的疫情期间高校防控系统开题报告.docx
基于springboot+vue社区老年人帮扶系统源码数据库文档.zip
基于java的超市商品管理系统的开题报告.docx
基于SpringBoot房屋买卖平台源码数据库文档.zip
xdu限通院23微处理器系统与应用大作业(两只老虎),适应于汇编语言keil软件,
<项目介绍> - 新闻类网站系统,基于SSM(Spring、Spring MVC、MyBatis)+MySQL开发,高分成品毕业设计,附带往届论文 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
基于java的学生网上请假系统的开题报告.docx
社会经济繁荣发展的今天,电子商务得到了飞速发展,网上交易越来越彰显出其独特的优越性,在人们的日常生活中,出现了各种类型的交易网站。其中一个就是车辆易主交易网站,它是一个服务于用户买卖二手车辆的交易网站,为用户提供了平等互利、方便快捷的网上交易平台,通过这一类型的网站,用户可自由出售和购买车辆。 本课题主要根据车辆本身的特性,充分发挥互联网的特点与优势,构建一个以二手车辆为商品、基于互联网平台的车辆易主业务交易管理系统,并根据车辆易主业务交易管理系统的应用需求,进行需求分析,进而对网站系统作规划设计。采用IDEA为运行平台,以SSH为框架,运用HTML语言、JSP技术、MySql数据库、JSP与后台数据库链接等关键技术建设二手车网上交易系统,构建车辆易主交易系统的会员注册与登录,网站首页展示、用户发布商品车辆,用户求购商品车辆,分页浏览、购物系统、用户后台管理、管理员用户后台管理等功能,并使这些功能得以实现并更好为用户服务。网站整体构建完成且测试成功后,用户可以进入网站进行注册、登录,登录后,用户可以在网站上发布自己的闲置车辆或者寻找想要购买的车辆,还可以收藏车辆,管理发布和收藏的车辆,
SQLite3的向量扩展库,windows dll,版本0.1.5
基于C++实现(控制台)商品库存管理系统