轻量级的JAVA应用开发框架:YMP

admin 11年前



YMP框架是什么?

YMP(yMatePlatform)开发框架是一套轻量级的JAVA应用开发框架,开发初衷只是想按自己的编码习惯,尽量采用最简单的方式实现我需要的东西,达到简化工作任务、统一开发流程为目标,能够减轻一点点的工作压力,让开发变成快乐的事!

在开发过程中,参考了很多优秀的开源项目,如:Hibernate、Struts、Struts2、iBatis、DBUtils、Spring JDBC、String MVC等等,它们都太优秀、太强大也太复杂了,但针对于我所参与的项目来说,有些特性基本无用武之地,反倒成了“累赘”,因此我决定冒天下之大不韪,去掉“累赘”重新造轮子,就这样YMP诞生了!

知识需要共享,我们才能进步,开源才是技术发展的力量源泉,我尊重开源,热爱分享,理解劳动为我们带来的价值,个人的力量始终有限,希望大家能够通过了解更多的开源技术,掌握更多的知识,让我们一起交流心得!

YMP框架有哪些特性?

  • 统一配置体系结构,为开发中所需配置文件提供统一的生命周期管理;
  • 系统与业务的日志分离,按功能或模块进行日志存储并可采用多线程写方式以降低I/O成本;
  • 插件机制,支持模块化开发与部署;
  • MVC分层体系,配置简单,可扩展,易维护,支持零配置,不依赖容器,多种视图支持,支持事件及异常接口扩展并整合插件特性;
  • 轻量级JDBC封装,多数据源、单实体ORM封装,支持MySQL、Oracle和SQL Server等数据库,支持存储过程调用和编码方式定义复杂的组合查询*;
  • 支持方法、请求参数绑定与验证,减少人工干预,灵活的验证器扩展接口;
  • 框架模块化加载,支持自定义模块,统一文件配置,简单、灵活;

YMP框架模块功能介绍

配置体系模块

配置体系模块,是一套简单的结构化开发模式,目的是让开发流程统一和规范,提供模块化开发和集成部署能力的解决方案;

配置体系结构按优先级由低到高划分三层,即:全局->项目->模块,其特性如下:

  • 统一配置文件检索、加载方式;
  • 模块间配置等资源共享:相同项目下各模块可以共用项目级公共配置、类和jar包等资源文件;
  • 配置文件类型可通过IConfigurationProvider进行扩展、支持缓存,避免重复加载;
  • 配置文件可自动填充到实现IConfiguration接口的配置对象,支持Annotation注解方式声明;
  • 集成模块的构建(编译)与分发、服务的启动与停止,以及清晰的资源文件分类结构可快速定位;

配置体系结构从开发角度解决了模块化开发流程和规范的统一、资源文件的生命周期管理;从维护角度解决了模块化集中式管理,将全部资源集成在整个体系中,其具备有效的资源重用和灵活的系统集成构建、部署和数据备份与迁移等特点;

更多内容参见:配置体系模块使用详解

日志模块

基于Log4J开源日志框架实现,采用XML文件配置日志记录器,对日志记录器对象提供统一生命周期管理,开发过程可以在任意位置调用任日志记录器输出日志,实现系统与业务日志的分离;

框架目前提供了两种日志记录器扩展实现,分别是:

  • DefaultLog4JLogger:标准日志记录器;
  • AsyncLog4JLogger:异步日志记录器,每个日志记录器均采用独立线程进行日志内容输出,避免日志输出阻塞业务代码执行;

更多内容参见:日志模块使用详解

插件模块

插件模块的设计目标是为了在接口开发模式下,可以将任务划分更细颗粒度,可以通过插件灵活变更接口实现;

由于插件采用独立的ClassLoader类加载器来管理私有jar包、类、资源文件等,所以插件之间的调用依赖业务接口;

插件工厂类负责分析、加载和初始化,插件是单例的,即所有可装载的插件在加载后被实例化并由插件工厂维护其生命周期;

更多内容参见:插件模块使用详解

MVC模块

MVC模块是一个基于模型、试图和控制器的抽象框架层,在抽象框架基础上分别面向Web应用开发(WebMVC)和面向独立服务程序(ServerMVC)开发提供了扩展支持,使两种应用场景均采用统一的开发模式,即通过简单的配置调整,两种场景的代码可以通用,从而达到降低学习、开发的成本,其具备以下功能特征:

MVC模块提供了、注册和,并与插件模块整合,

  • 支持控制器方法请求路由映射及拦截器、控制器的自动扫描、注册;
  • 支持自定义异常及事件处理;
  • 支持插件;
  • 标准MVC实现,结构清晰、配置简单,完全基于Annotation注解方式配置;
  • 支持零配置(Convention Model,无需编写控制器代码,直接匹配并执行视图);
  • WebMVC支持多种视图技术,包括:HTML、JSP、JSON、Freemarker、Binary、HttpStatus、Redirect和Forward等;
  • WebMVC支持REST风格URL模式;
  • 支持请求参数与控制器方法绑定;
  • 支持请求参数有效性验证;
  • 支持控制器方法的请求拦截;

更多内容参见:MVC模块使用详解

持久化模块

持久化模块目前基于JDBC框架API进行轻量封装,针对关系型数据库(RDBMS)数据存取的一套简单解决方案,主要关注数据存取的效率、易用性和透明,其具备以下功能特征:

  • 封装JDBC 低级API,结构简单、便于开发、调试和维护;
  • 支持数据的批量更新,支持数据库存储过程的操作,支持标准化的结果集处理,预编译 SQL 语句处理;
  • 支持单数据表CRUD等方便操作,无需编写SQL 语句;
  • 支持结果集与值对象的自动装配,并可通过IResultSetHandler接口自定义装配规则;
  • 可动态配置数据源,支持通过JNDI 调用容器数据源及多数据源支持;
  • 通过IDataSourceAdapter接口可自定义数据源、连接池配置;
  • 支持常见数据库(如:Oracle、MySQL 、SQL Server等)的数据分页查询;
  • 支持DAO设计模式;
  • 支持编码方式自定义多表关联组合查询*;
  • 支持JDBC事务嵌套;

更多内容参见:持久化模块使用详解

验证模块

验证模块是参数有效性验证工具,对类方法的参数通过Annotation注解方式声明其验证规则,返回验证结果,并支持I18N;

通过实现IValidator接口或继承AbstractValidator类,可自定义验证器并注册到验证模块;

更多内容参见:验证模块使用详解

模块管理器

模块管理器负责YMP框架各模块的加载、初始化工作,模块的加载顺序、参数配置等均由ymp-conf.properties文件统一配置,请阅读框架初始化配置文件详细说明

用户可以通过实现IModule接口,开发自定义模块,并将其添加到配置文件的模块加载列表中即可;