Java全栈式Web应用开发框架——LEAP的核心设计思想

2016-07-19云小编 懂企业的品高云

小编的话

“品高云公开课”系列文章意在分享技术牛人的知识干货,和大家一起交流学习云知识,每期主题都不一样哟!期待各位读者在文后发表留言,来一场技术上的交流和思想上的碰撞!本期品高云公开课由彭鸿杰带来“Java全栈式Web应用开发框架——LEAP的核心设计思想”的分享。

分享嘉宾

彭鸿杰目前就任品高云云应用平台部软件工程师, 13年入职品高,专注Java应用开发框架研发和品高云SSO产品研发,目前主要负责Java开源应用开发框架LEAP的核心代码开发和品高云SSOV3产品研发。分享正文

随着互联网浪潮席卷我们生活的方方面面,企业应用的业务中也越来越倾向互联网思维,企业应用和互联网的融合是未来的大势所趋,未来的企业应用肯定是越来越倾向于以开放接口的形式提供服务,各个业务系统之间的联系也会越来越紧密。

品高云在14年底的时候,就已经开始思考,未来该以什么样的技术来支撑企业应用才能顺应大势。Java的开源技术资源非常丰富,但是却始终找不到一套能完美融合企业应用和互联网应用的开发框架,最后我们决定自主研发一套,这个就是我今天准备跟大家分享的应用开发框架LEAP。

LEAP,全称为Light Enterprise Application Platform,意为轻量级企业应用开发平台,是品高云自主研发的基于Java的全栈式Web应用开发框架,能完美融合企业应用和互联网应用。所谓全栈,指的就是Web应用的前后端。LEAP拥有自己的模板引擎,我们称为HTPL,IOC和Bean容器,ORM模块,以及安全链。整体的架构如下:

这套架构看起来非常像现在Java开源界占据霸主地位的SSH整合框架。而实际上,他们的功能也非常相似,但是SSH框架相比LEAP来说笨重太多了,光整合这几个框架就要耗费不少时间,而且各个框架后期的配置优化都是一个难题。

但是LEAP不同,LEAP一个框架包含了三个框架的功能,同时搭建LEAP本身非常轻量,使用maven创建的java工程,仅仅需要一个依赖和少量的配置。

我们来看下LEAP的几个核心特点:

轻量

我们先来看看,一个基于LEAP的maven工程,它的依赖配置是怎么样的:

这里可以看到,只需要一个依赖,就可以把LEAP的所有jar包都引入工程中了。

然后是配置,搭建一个完整的LEAP开发工程,全部的配置如下图:

这里只需要两个配置文件,配置内容也是及其精简。

易用

LEAP最核心的设计理念就是简单易用,因此设计的时候,许多规则都是在于最大限度的降低开发人员的学习成本,同时让开发人员可以用最简洁优雅的代码完成复杂的业务操作。

这里我以HTPL模板引擎和ORM为例,看下LEAP的使用。

HTPL模板引擎是一个基于HTML注释的模板引擎,可以让HTML代码和模板语言完全分离,互不影响,并且HTPL的模板语言与Java语言的语法非常相似,初学者完全可以举一反三轻松学习HTPL的模板语言,比如下面的是非判断:

这里的if else和Java中的if else很相似,if的条件表达式的语法就是Java的语法,前面的#号表示这段注释是HTPL的模板语言。

这里我们可以很容易想到循环的语法:

HTPL还有更多强大的功能和指令,这里先不深入去说。

我们再看看LEAP的ORM模块。

LEAP的ORM框架使用非常简单,只需要配置一个数据源即可,这个就是在前面提到的少量必须的配置之一:

这个配置完成之后,ORM就可以开始对数据库进行操作了。

LEAP对数据库表映射的类称为Model,所有的Model类都有静态方法可以直接与数据库交互,Model对象本身也有操作数据库的接口,声明一个Model类的方式就是声明一个继承自leap.orm.model.Model类即可,举例如下:

假设User类是一个Model类:

这个类我们通过注解告诉LEAP映射的是哪个数据库的表,这个类就是一个完整的model类了,不需要其他的配置和声明。

接下来我们看一下Model类如何操作数据库:

创建一行记录:

删除一行记录:

按照指定条件查询数据库记录:

我们可以看到,单表的增删改查基本都是一行代码可以完成,使用LEAP的ORM框架可以使原本复杂麻烦的数据库查询变得非常简单,而且相关的映射配置,也不用写任何SQL语句。

当然,LEAP的ORM还提供了更加强大的动态sql语法以及完全兼容标准SQL语法但是功能更加强大的leapQL查询语法。

这里不再对LEAP的细节深入讨论,这些相关的特性我们可以在LEAP的官网(http://leapframework.org)上看到。

实际上,LEAP除了完善的全栈开发功能以外,还提供了非常多的面向开发人员的功能特性,比如:

1.静态资源自动版本标识

2.用户身份认证

3.H5跨域资源共享

4.XSS攻击自动防御

5.Restful服务支持

等等。

这些特性,决定了LEAP框架无论在企业应用开发上,还是互联网应用开发上,都有先天的优势。

LEAP在2015年开始已经正式在品高云企业网盘里作为核心的开发技术在使用了,同时,品高云的其他项目组也纷纷开始使用LEAP作为服务端的开发,都取得非常不错的效果。

目前我们也基于LEAP框架正在开发一个更加杀手级的企业产品,品高云API网关,目前已经完成大部分的核心功能,品高云API网关支持OpenID Connect标准协议,可以将企业内的所有应有系统服务化,并且统计所有服务的使用情况,将帮助企业在全局上统筹各个应用系统的使用情况并且合理分配企业内部资源。

LEAP未来也会成为我们推荐的BingoLink应用后端开发框架和品高云API网关的服务应用开发框架。

在2016年初的时候,我们终于决定正式将LEAP开源出来,分享给大家使用,目前代码已经推送到github上,官网地址:http://leapframework.org.

非常欢迎各位Java的开发人员来使用LEAP框架,同时,如果有人希望加入我们的开源团队,成为LEAP核心代码的贡献者,也可以联系我们。

欢迎大家一起来交流!

相关文章

3步搭建局域网公共网盘 其实你根本不需要NAS

工作中,经常有大量图片、视频、文件的存储与分享需求。以前,最简单的解决办法就是使用U盘拷贝,不仅效率慢,而且U盘传着传着就容易丢失。另外,U盘读写速度慢,如传输几十GB视频文件,仅拷贝可能就需要数小时...

9.5K star!ZFile:告别公共网盘!这款神器让你数据安全感爆棚!

「小墨是前端」专注分享前端技术,推荐优秀的开源项目,展示Github、Gitee上的创意作品,带你深入前端底层,一起成长。最近在做一些内部项目,需要一个简易的文件分享平台。不想搭建复杂的系统,又不想用...

2021最新Java学习视频400集,网盘自取,建议白嫖

Java一直是主流的编程语言,这里给大家整理了Java的入门学习视频,总共400集,超级适合小白学习。内容太多就不一一展示了,完整版网盘自取获取方式:关注+私信“学习”...

阿里内部重磅开源!读完这份20W字Java性能实战经验手册,最少P7

在当今的软件开发领域,性能优化一直是开发者们关注的焦点。特别是在大型互联网公司中,系统的性能直接影响到用户体验和业务效率。文档的结构为了帮助读者更好地学习和理解,手册采用了循序渐进的结构,分为以下几个...

3个简单步骤,让你在家中搭建一个私人百度云盘!

在现代数字时代,人们越来越多地依赖于云存储来保存和共享数据。然而,大多数云存储服务都需要付费订阅,而且对隐私的保护也不尽如人意。因此,许多人开始寻找一种更加安全、可靠且经济实惠的方式来存储和共享数据。...

挂载阿里云盘为本地磁盘

网盘为多类型终端文件传输提供了极大的便利,很多时候我们需要直接在PC上编辑处理文件,将云盘进行挂载,可以像编辑本地文件一样编辑云盘文件。网上存在许多类似教程,但大多为转发,并未验证可操作性,于是实操后...