LML在这种情况下的夹缝中诞生。我并非高手,所以LML也不算完善。
   
    首先:LML基于SSH.一直以来都被公司使用的Castle框架的快速简洁而折服,在不追求运行效率的情况下,它堪称完美,这当然还要感谢带它来公司的某经理。但是,别人的终究是别人的,打心里觉得自己的才是最好的。我水平有限,我没有能力能够在java平台上从头开始造一款媲美Castle的框架。站在巨人的肩膀上,很多东西就不是很复杂了。SSH是为人熟知的开源Java Web框架,成熟而又稳定,使用率也比较靠谱,于是萌发了在SSH的基础上在此封装改造,形成一套框架的想法。
   
    其次:LML的模板引擎使用velocity,语法简单,也可以很容易的借用codesmith等代码生成工具生成模板。这实在是符合代码简单的原则!使用velocity的另外一个原因是我们在。Net中一直使用Nvelocity,他们二者语法非常类似,大部分代码几乎可以做到无修改移植。这一点以后会有事例的。

第三:LML支持layout.无论是使用frame还是采用各种嵌入页面的方式,都是为了避免重复的书写公用的页面,就像我们在某处声明了一个公用的变量,那么就不必要到处书写公用变量所代表的值,另外也给修改带来了方便。它其实相当于我们在asp.Net使用的母版。
   
    第四:html页面(View)直接支持调用在后台提供的静态或者非静态方法。我觉得这样也许被某些人深恶痛绝,我就曾经被一个不知其名的小同学骂过,但是这必然是很有用的。在原始的aps.net中,我们不分什么前后台,之后出现了MVC,某些人(大部分是刚入门的吧?)一直在叫嚷视图和逻辑分离。分离难道是绝对的吗?个人认为,视图确实应该和业务逻辑分离,而绝对不能和功能逻辑分离。业务逻辑此处是指为了实现一定的业务而做出的各种复杂的数据处理,功能逻辑此处是指为了展现数据而做的逻辑处理。我们查数据,那绝对不是目的,真正的目的是展现数据。就像某人怀才不遇,肚子里有千万数据,而不能展现,那还有什么用呢。我希望能够使用更简便的方式来展现数据,比方更简单的循环,比方这里的我们可以直接调用后台方法进行简单的数据处理,已达到更完美的数据展现。
   
    第五:拒绝大量的配置文件。有一种思想叫做,约定优于配置。我一直觉得SSH中需要我们配置的太多,就算一些微不足道理所当然的也要配,简直不胜其烦。所以我大胆的做出决定如非必要,我将尽量的避免配置文件,比方我不再将Action托管给Spring.与其让Spring采用request作用域来管理Action,还不如让Action自生自灭的好,反正就算是托管给Spring,我也没有见到效率更快。最新的SSH支持使用注解的方式来管理配置,但是我仍觉得这没有那么必要。所以对于一般情况,Struts的Action我使用通用配置,约定一下,什么都变得轻松了。这一切都是对我们来说,不知道各位的情况是怎么样子的?当然还有一些其他的例如log4j等的配置,我也是能简就简。
   
    第六:局限的使用Model.自从面向对象大行其道,渐渐深入人心,好归好,不好的一面也影响了我们的判断。思维固式导致我们要求我们只根据用户的ID查出姓名和年龄两列是,我们也必须要查出一个具有四十个属性的Model列表。这,好还是不好?我们更提倡使用原生的sql去查询,快速而有效。当然,在编辑和保存的时候,结合struts2的自动绑定功能,使用Model更能提高编码效率。在使用效率一词时,我是很谨慎的。这里仅仅只是编码效率或者开发效率,至于运行效率,一系列的绑定翻译操作,最后再执行sql,总没有直接执行sql更快吧?
   
    第七:淡化常规分层。我一直不提倡所谓的三层架构,什么多层,甚至几十层。有时候整个业务逻辑你只需要写10行代码,而你又被迫要在每一层写一句代码。汗,现在解脱了。我至今没有见过千万级别的项目架构都是什么样子的,我们做过的最大的项目不过是200-300万,我们得到的经验是:不走寻常路,开发简单,维护也速度。到现在也没有遇到一个客户说:我心情不好,把你们现在使用的Ms sql换成mysql吧!所以在不考虑这些一直被一些人吵得火热的灵活性可配置的情况下,我们的框架越发展越简单,越趋向于灵活。就目前我能看到的,大部分设计都是过渡设计。没有必要为了炫耀你的设计模式学得好,此处就非要做一个工厂!简单的才是最好的。
   
    第八:权限和菜单。我觉得毫无疑问的是,对于一个正在使用,可以被使用的框架来说,不论它怎么分层,也不论它是轻型还是重型,无论如何它都要有自己的一套菜单和权限管理策略。我们一直做得某些业务系统,权限就是生命,不可马虎。LML就提供了相应的接口,能够方便的收集生成权限和菜单。在接口的基础上具体的业务系统就可以进行管理了。
   
    第九:自动化分页。不可避免的分页,也就催生了不可避免的代码。作为一个架构师或者一个项目经理,你可以要求程序员在每一个模块中都要自行搞定分页逻辑,大部分情况下显示还是能够被简单集成的。这很不妥。LML采用的分页将不必要重复造轮子,无论是查询条件,还是排序,或者字段展现,以及分页选项,都能够一笔带过,轻轻松松。要的就是这个效果,有了这个谁还有必要不停地写分页呢。
   
    第十:AJAX支持。一直以来AJAX都是主流技术。坏消息是大家都知道Struts中是不能直接访问servlet API的。好消息是,LML支持return JSON(“”)。就这样,完美的支持了AJAX.还可以使用return JavaScript()向页面输出一段可执行脚本,你或许不了解他的伟大之处,我们经常用它来提示服务端校验结果,而不用刷新页面,更不必要验证之后而导向另一个页面。         我必定是框架的作者,让我讲框架的优点,我可以讲上一天一夜。
   
    但是,这并不是我的目的。其实我真正的目的是:树立以简求快的作风,让一些人明白,对于某些需求,简单的才是最好的。

转载于:https://blog.51cto.com/cfkjava/960451

Java快速开发框架LML简介相关推荐

  1. java eop_javashopeop Javashop-eop是一套开源的java快速开发框架 联合开发网 - pudn.com

    javashopeop 所属分类:Java编程 开发工具:Java 文件大小:10761KB 下载次数:5 上传日期:2017-01-24 13:21:05 上 传 者:zhangqiang 说明:  ...

  2. SpringBoot+Vue前后端分离的Java快速开发框架 工作流开发框架

    多聚合是一套全部开源的Java快速开发平台,毫无保留给个人及企业免费使用. 我们集成了常见的功能模块. 前端采用Vue.Element UI. 后端采用Spring Boot.Shiro.Redis. ...

  3. 以简求快--java快速开发框架

    照例先发发牢骚,然后再进入正题. 领导说每个人应该看清自己的短板,我看的很清,我只是没上过他们所谓的学而已,这并不能成为我发展的障碍,更不能作为贬低我价值的理由. 最会做生意的人是,把成年的蛋鸡杀掉, ...

  4. java 快速开发框架平台 代码生成器 springmvc SSM后台框架源码

    博文来源:http://www.fhadmin.org/webnewsdetail2.html A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码 B 集成代码生成器 [正反双 ...

  5. java 快速开发框架平台 二次开发 代码生成器 springmvc SSM后台框架源码

    官网 http://www.fhadmin.org/ D 集成安全权限框架shiro   Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠 ...

  6. Java快速开发框架_若依——Ruoyi-SpringCloud版本-2.安装redis服务端和客户端-win7

    QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群6493473 ...

  7. Java快速开发框架_若依——Ruoyi-SpringCloud版本-3.下载源码并导入数据库 安装nacos

    QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群6493473 ...

  8. 推荐一个 Java 接口快速开发框架

    欢迎关注方志朋的博客,回复"666"获面试宝典 今天给小伙伴们介绍一个Java接口快速开发框架-magic-api 简介 magic-api 是一个基于 Java 的接口快速开发框 ...

  9. 推荐一个 Java 接口快速开发框架,超级nice!

    点击关注公众号,实用技术文章及时了解 今天给小伙伴们介绍一个Java接口快速开发框架-magic-api 简介 magic-api 是一个基于 Java 的接口快速开发框架,编写接口将通过 magic ...

最新文章

  1. 详解MTK系统中字符转换问题
  2. POJ1003/1004/1005/1207/3299/2159/1083/3094/2388解题(刷一波水题)
  3. rabbitmq 集群 ha负载 Consumer raised exception, processing can restart if the connection factory
  4. 《零基础》MySQL GROUP BY 语句(十九)
  5. 差分隐私与可穿戴式设备调查【笔记】
  6. Android Studio 第六十三期 - Android框架 -RecycleView所有用法
  7. 微软再现宕机事故 部分用户9天无法使用电邮
  8. markdown 本地链接_记录笔记、markdown工具推荐
  9. Vue插件_自己封装插件_以及使用自定义插件---vue工作笔记0017
  10. /^(0|[1-9]\d*)([.]5)?$/ 在PHP正则中是什么意思 ?
  11. python基础教程廖雪峰云-Python 基础教程
  12. opencv学习 给视频添加文字
  13. 360云盘修改存储目录技巧
  14. BestMPRBaseVtk-009-设置默认窗宽窗位
  15. 无需越狱,iPhone修改微信提示音!
  16. java小游戏大鱼吃小鱼入门(音乐添加+鱼头转向+背景移动+背景泡泡效果)
  17. IT一族需警惕11钟“电脑病”
  18. 教你认识各种分辨率的英文缩写
  19. 影响人生的一百条格言
  20. Result Maps collection already contains value for com.anoxia.mapper.XXXMapper.BaseResultMap

热门文章

  1. netty Demo
  2. String 源码解析
  3. php中mysqli 处理查询结果集的几个方法
  4. DWZ富客户端框架设计思路与学习建议
  5. GNU make manual 翻译( 一百五十五)
  6. [转] Silverlight Navigation(多页面切换、传值)
  7. 这本书人手一本,杠精能少97%?
  8. 0.07 秒启动一个 SpringBoot 项目!
  9. 面试题:如何实现丝滑般的数据库扩容
  10. 积木报表对比帆软报表有什么区别?