`
jiopi
  • 浏览: 32314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JIOPi v0.4 规范概述

阅读更多

JIOPi v0.4 完成了模块访问的POJO化

 

说明:如未特殊说明,下文中的 JIOPi 均指 JIOPi v0.4 规范

 

JIOPi主题:回归POJO

 

JIOPi v0.4 在继承了JIOPi v0.3 蓝图! 的基础上,采用类重定义方式以避免引入额外API进行依赖注入,新增了以下特征和编程风格

  • 本地开发模式模块库支持
  • 模块中的实现类重定义支持
  • 上下文环境中调用时的实现类重定义支持
  • 重定义实现类允许额外功能扩展
  • 模块内部的依赖注入
  • WEB容器整合

作为一个模块化系统框架,因为其ClassPath的特殊性(统一部署),为了保证测试时和运行时的运行一致性,并且由于模块开发也可能用到框架特性,因此,测试环境也需要是一个JIOPi环境,为此JIOPi引入了本地开发模块库,无需配置文件,只需按照和传统WEB开发一致的目录结构,即可构成一个开发模块库,从而测试时即可使用JIOPi从开发模块库读取最新类文件进行调试。

 

第三方API侵入是任何框架都难以避免的问题,而被侵入框架API的程序也很容易被该框架绑定,很难脱离该运行环境。JIOPi一致努力减少框架API的引入,非运行时可选标注让JIOPi模块完全与POJO兼容,通过Ioc整合,避免调用代码中再引入额外API。然而Ioc整合也只是将JIOPi的API从用户的代码中转移到了Ioc配置文件中。JIOPi 0.4引入了全新的类重定义代码风格,完全避免了使用模块而需要引入JIOPi API的问题,在解决API侵入问题的同时,还带来了其他额外的优势。

 

下面将对相关配置进行说明

 

JIOPi 0.4没有带来新的程序API变化,唯一增加的只是配置文件说明

 

本地开发模块库

配置本地开发模块库,只需在jiopi.properties文件中增加一个新的模块库,配置如下:

jiopi.resourcepool.local.path=file:///e:/JiopiProjects/local-repository/
jiopi.resourcepool.local.pri=2

此处模块库的path不再是一个xml文件,而是一个本地目录,该目录的文件夹格式如下:

/blueprints

  +blueprint_name

    +0.1(version)

      +lib

      +classes

/modules

  +module_name

    +0.1.0.0(version)

      +lib

      +classes

/commonlibs

  +group_name

即一级目录为固定名称用于存放 蓝图,模块,共享库

蓝图和模块 文件夹 包含相同的目录结构,首先是 版本号,下一级是标准WEB-INF目录,lib和classes目录

 

本地模块库只要保证包含以上文件夹即可,是否还存在其他文件夹并不影响该结构的解析,比如 版本目录下很可能还会存在一个src目录,模块根目录可能会作为一个project的根目录而存在.project文件等,这些都被允许,从而保证了开发模块库和标准开发环境目录结构的一致性

 

类重定义

何谓类的重定义呢?在JIOPi风格中,在出现对其他模块的依赖时,只需在classpath中部署蓝图程序,而蓝图是不能直接被使用的,因此必须有实现类,而且在传统接口编程中,必须获取接口的实现类对象,即不允许存在静态方法。

 

JIOPi通过将自定义的实现类进行重定义,即首先由用户创建一个接口的实现类,然后通过类重定义,将一个模块的实现类赋予该实现类,从而让该实现类与真实实现保持一致的运行时效果。因此在JIOPi中,允许在蓝图中定义静态方法或成员变量,并更高效和POJO模式的解决了Spring中的方法注入要解决的原型Bean的注入问题,并且实现模块依然可以通过配置文件进行快速变更,而无需更改代码,并且允许对实现类做出特殊处理,以便用于非JIOPi环境

 

类的重定义是这样配置的:

 

修改 jiopi-config.xml 文件

在 configuration 元素下直接添加

<redefine class="代理实现类的类全名" module="模块名" version="版本" controlpanel="控制面板名" configuration="配置文件ID"/>

其中 configuration是可选的

例如随iBean0.4.0.0中发布的一个简单邮件发送的配置:

<redefine class="org.jiopi.module.mailsender.sample.MyMailSender" module="jiopi.module.mailsender" version="0.1" controlpanel="jiopi.MailSender" configuration="test"/>

 

特别说明,iBean0.4.0.0 兼容JDK1.5,但是如果希望在context环境中实现类重定义,则需要JDK1.6的支持,在模块中配置的类重定义可以很好的运行在JDK1.5下

 

总结

JIOPi 0.4基本完成了构建本地Java模块系统所必须的各种特性,并构建了完全POJO兼容和无API侵入的JAVA模块化系统框架。JIOPi框架仅作用于Class的加载和实例化过程,类的重定义采取了字节码级别的代理类而非运行时代理类,从而不会对运行时环境产生任何效率影响,同时保证了只要代码在加载阶段不出现问题,则运行时阶段也绝对不会出现问题,具备较高的运行时可靠性。

 

0
0
分享到:
评论

相关推荐

    LvglFontTool_V0.4

    LvglFontTool_V0.4 V0.4 1、增加FreeType TTF的支持,生成抗锯齿字体更加圆润、光滑。 2、修复后面AWESOME图标不能添加问题。 3、优化了下查找算法。 4、增加了直接存文件的选项,解决文字多时转换死机或慢的问题。...

    设备树规范devicetree-specification-v0.4

    描述了设备树的规范文件

    navifirm_V0.4.exe

    navifirm_V0.4.exe navifirm_V0.4.exe navifirm_V0.4.exe

    3dmax强大的相机匹配插件CameraMatch v0.4

    《3dmax强大的相机匹配插件CameraMatch v0.4详解》 在三维动画和视觉效果制作领域,精准的相机匹配是至关重要的一步,它能够让真实世界与虚拟场景无缝融合,提升作品的真实感和视觉冲击力。CameraMatch v0.4就是...

    navifirm_v0.4汉化版诺基亚固件下载工具.zip

    navifirm_v0.4蜃楼汉化版是电脑端的诺基亚NOKIA手机固件下载工具,通过使用它你可以很方便的下载各机型各版本的固件。选择好产品型号和发布版本及CODE,下载即可,可以直接下载到电脑中,也可以通过下载工具保存到...

    ORB-SLAM3 v0.4-beta

    ORB-SLAM3 v0.4-beta 是一个高级的视觉惯性里程计(Visual-Inertial Odometry,简称VIO)系统,专为实时、准确地估计机器人或无人机的运动而设计。它结合了视觉传感器(如摄像头)和惯性测量单元(IMU)的数据,以...

    lvgl v9.1版本使用lvglFontTool V0.4生成的外部bin字库

    lvglFontTool V0.4生成的外部bin字库适配lvgl v9.1版本

    程序压制工具 V0.4

    "程序压制工具 V0.4"的出现,无疑是解决这一难题的有效工具之一。 "程序压制工具 V0.4"的设计初衷是为了解决程序封装与发布的痛点。它可以将任何已开发完成的程序封装成EXE格式,使得程序拥有独立的执行文件,从而...

    IC Card V0.4.exe

    IC Card V0.4.exe

    谷歌语音 Google Voice v0.4.6.1

    谷歌语音 Google Voice v0.4.6.1 更新时间:2014-09-13 版本:0.4.6.1 软件语言:非中文 软件类别:网络语音 软件大小:6.82 MB 适用固件:1.6及更 高固件内置广告:没有广告 适用平台:Android Google Voice是一...

    16位密码生成器v0.4绿色免费

    v0.4可能表示这是该软件的第四个版本,意味着开发者可能已经对其进行了多次改进和优化。 描述部分虽然没有提供具体信息,但我们可以推断这可能是一个便携式应用,因为提到了“绿色免费”。在计算机术语中,“绿色”...

    Aryan RAT v0.4 source src.rar

    Aryan RAT v0.4源码分析 Aryan RAT(远程访问木马)是一种恶意软件,主要用于非法控制和监视受害者的计算机系统。该软件的主要功能是允许攻击者远程执行命令、窃取敏感信息、监控受害者活动,甚至进行键盘记录。在...

    phpaaCMS v0.4.zip

    在深入探讨phpaaCMS v0.4之前,我们先来了解一下什么是内容管理系统(CMS)。 内容管理系统是一种用于创建、管理和发布数字内容的软件应用。它允许非技术人员通过用户友好的界面添加、编辑和删除网站内容,而无需...

    狂牛视频加密 v0.4.8.7读key工具我试过能行

    《狂牛视频加密 v0.4.8.7 读取密钥工具解析与应用》 在数字内容保护领域,视频加密技术起着至关重要的作用,它能够保护内容免受非法复制和传播,确保创作者的权益。"狂牛视频加密"是一款针对视频内容的安全防护软件...

    ntpwedit v0.4(SAM文件查看器)汉化版.rar

    软件介绍: 能够打开C:\WINDOWS\SYSTEM32\CONFIG\SAM文件,查看系统用户名及密码,支持windows2k/xp/vista/win7...压缩包内附32及64位版本。不要在WINDOWS系统下打开SAM,会提示打开失败,请进入PE系统就可以查看了。

    文件备份专家(BackupMaster) v0.4

    BM是一个文件备份工具,它可以保存你需要备份的多个文件或者文件夹的路径,备份方式,命名策略等信息,在执行备份任务的时候把文件或文件夹(压缩)拷贝到指定的目录。默认情况下,BM在执行备份的时候会检测文件日期...

    MYSUC精致留言板 v0.4

    MYSUC精致留言板(asp+access)UTF-8编码 (如需GB2312编码,请转自官方下载) 使用模块技术,前后端代码完全分离,可以很容易的修改留言板的结构与样式。 0... 软件类别:留言日记 运行环境:ASP环境/ 授权方式:...

    狂牛视频加密v0.4.8.7读key工具试过可以用的

    狂牛视频加密 v0.4.8.7读key工具我试过, 版本对就行附带一个样品

    lfhacks日记 v0.4.zip

    lfhacks日记 0.4 更新日志:2014-08-08 自动设置时区为PRC( 8) 提供两种语言界面: 中文:index-zh.php 英文:index-en.php 改名为index.php即可使用。 英文版与之前的版本兼容,如果转中文版,需要新创建...

    Source V0.4.rar

    【标题】"Source V0.4.rar" 是一个压缩文件,很可能包含了一个软件或项目的源代码版本V0.4。这个版本可能是一个迭代更新,针对上一版本的改进或者新增功能,通常在软件开发过程中,开发者会定期发布新版本来修复问题...

Global site tag (gtag.js) - Google Analytics