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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值