文档章节

jeecg理解

j
 jiao_zg22
发布于 2015/04/14 22:43
字数 2600
阅读 44
收藏 0
点赞 0
评论 0

    写这篇博文有两个目的,一个是做任务,一个是记录下来我对jeecg项目的理解,抛砖引玉,欢迎大家吐槽,拍砖和人身攻击就不要了,违法。

    言归正传,下面进入正题。

    从历史角度谈下jeecg出现的可能性,必要性,以及能够解决当前项目开发中的什么问题。

    从面向对象语言出现开始,编程不再局限于逻辑性思维,而开始往工程学靠拢。面向过程的开发语言在大型项目中很难形成统一规范,也难以实现通过规范化的文档和人们的共识去协作开发一个项目,面向过程的开发方式往往是一个人的设计思路,完成一个项目,这种方式开发模式是无法发挥优势的,或许这个时候程序本身就是一种开发模式,但其他开发者可能对这种开发方式一窍不通,或者理解不够到位。面向对象的开发方式使人们开始可以以共同的规范,按照相同的设计模式和设计思路来进行开发。这时候人们可以把一个整体的项目分成不同的模块,然后通过相同的设计模式和设计思路来进行开发不同的模块,然后合并到一起,形成一个完整的项目,实现人类的信息化进程。此时一个项目可能会解决一种信息需求,比如实现一个论坛系统,来解决人们一群人沟通的需求和讨论某个专题的需求;或者一个学习系统;或者学校里的一个网站;或者学校里面一个学院的一个网站;或者一个专业的网站;或者一门课程的网站;或者一个学分管理系统等等。此时的信息系统使用的是各个程序员或团队自己熟悉的开发模式,数据库和框架甚至语言。比如早起的mvc开发模式,webwork框架,struts1框架,ejb框架等。然而每种框架都存在其优点和缺点,于是开始出现框架之间的协作和融合,我们最熟悉的也是现在应用最多的ssh框架。框架的出现使开发模式变得更加规范,各种中间件也开始出现,以便解决遇到的各种问题。比如hibernate的出现,屏蔽掉了数据库之间的差异。spring的出现消灭掉了配置文件而使用约定大于配置的方式实现。前端页面也从被动接受css的布局控制变得更加灵活。js的出现使网页变得不再只是固定不变的,而是可以动态改变的,局部改变而无需全部刷新。js由于其兼容性差和作为一门语言太过随意,急需一种规范来约束其太随意的毛病,于是出现了js框架。js框架的出现不仅解决了大部分的浏览器兼容性问题,更是将通用的功能做成接口,直接配置就可调用。这时候的系统开发已经变得不再复杂,只要提前设计好数据库,然后通过模式在各个层次实现好各自的部分,程序就可以运行成功。这时候的业务设计是放在数据库设计的时候体现的。随着人们对开发的熟悉,发现约定大于配置和分层的方式有一种好处,就是一旦设计好了数据库,起好了实体类的名称,各个层次之间的有关联的模块是可以以一种规范进行约束的。比如用户表userinfo,在实体bean里面可以起名UserInfo,那么所对应的持久层就可以起名UserInfoDao和UserInfoDaoImpl,service层可以起名UserInfoService和UserInfoServiceImpl.这种规范的出现不仅使开发过程中各个模块之间的方法不至于错误调用,解决了起名的麻烦,更是同一层的模块可以统一管理。于是出现了开发工具级别的代码生成工具。只要设计好数据库,就可以用代码生成工具按照既定的规范把不同的模块进行划分之后生成不同层次的代码。这时候后台程序开发效率开始成倍提升。可是这种开发方式还有局限性的,就是有些系统的业务是时效性很强的,比如一个信息系统是随着政策的改变要随时能够修改的。这时候需要频繁的改变业务方面的数据库和页面(其他可自动生成)。这不仅带来了开发的麻烦更使开发变得琐碎,枯燥和无趣--既没挑战性又无成就感。那么如果数据库的生成能够放到页面上进行设计,设计完成之后自动生成数据库和各层次的代码以及页面模块元素的话,不仅能够提高开发效率还能减少对数据库的设计带来的门槛。于是onlinecoding模式应运而生。此时各种开发模式都已经成熟,只要结合好页面和数据库方面的对应关系,然后用现成的中间件调用数据库的ddl等命令就行。此时网页生成代码和页面(即智能代码生成)已经变得可能。

    早期的系统之间是不存在任何的关联的。系统作为一个管理数据的服务器程序,内部的数据是通过后台手动输入进去的。此时系统之间没有任何的联系,除非在不同系统里面相 同模块输入相同的数据。这也就是所谓的信息孤岛问题,系统之间没有数据间的关联性和流动性。后来人们为了给这些系统之间相同的数据对接,形成了集成系统项目和单点登录等技术。此时的信息系统之间解决掉了部分数据不一致问题,也修补丁似的缓解了信息孤岛问题。然而系统之间由于开发者的不同,所选择的开发模式可能不一样,用到的工具方式等可能也不一样,甚至用到的语言都不一样。虽然补丁似的缓解了信息孤岛问题,但随之带来了维护难度的增加和扩展性和灵活性的减弱。因为越多的开发方式要求程序员掌握越多的技术,越需要揣摩先前开发者的思路。甚至有些程序读起来晦涩难懂,尤其当敏捷开发没有注释和文档的情况下。这时候甚至出现一种怪现象:程序员宁可自己开发也不愿意改变原有的代码。这最明显的原因是改动源代码将会造成更多bug的出现,而解bug往往占据开发过程中不可小觑的一段时间。于是更多的人开始选择自己开发。但是开发的多了后会发现,系统是存在共同的模块的,比如通讯模块,邮件模块,文件上传下载模块,用户权限管理模块。只是每个系统略微有差异,总体是一样的。人们开始找开源的通用系统,但大部分系统要么通用性不够,要么规范性不强,有一些系统将用户角色权限模块的关系全部设置成了多对多关系--看似通用,实际上很考验超级管理员的智商(即便是个开发者)。有一些开发者确实做了部分的不错的通用模块,但是很多是商用的并且定价不菲。由于商用的局限性,产品的更新换代总是需要一段时间。人们都渴望有人开源一个通用的基础系统供大家一起使用,一起完善。此时此刻,无论是哪种开源基础系统都将具备极强的生命力,而jeecg成为了第一个。

      jeecg解决了通过网页配置系统而无需手动设计数据库的新模式。解决掉了开发过程中通用模块的重复劳动,然后作为开始版本的jeecg也有其缺点和不足,最重要的一点是jeecg最适合的是企业项目,这是它的领域。还有jeecg可以自动生成关系简单的模块,如果关系复杂的很的话,用jeecg来设计不仅不能提高开发效率,甚至会使你抓狂到不行。也就是jeecg是半智能。需要根据实际情况判定需不需要使用jeecg。如果系统注重效率和并发等特性的话,还得依具体情况择优使用jeecg的模块。jeecg也需要等待历史的检验。

    从结构上剖析一下jeecg系统。以3.5.0为例

    jeecg3.5.0 非maven 版本使用的技术框架就是文档里面写的,springmvc,minidao,easyUI等。jeecg系统本身自带了企业系统的通用功能,如用户权限角色模块,报表模块,文件上传下载模块,消息模块等。这些模块的代码使用了注解,反射,代理等机制,再结合面向切面的扫描和处理,使代码量减少到很少。自动表单结合数据字典和ddl

语句变得可能。增强sql采用深入拷贝,将对象转换成流进入jvm。activiti工作流引擎可以设计流程,结合智能表单系统,可以把企业大部分的业务包含进来。

    对jeecg的理解还处于门外汉的阶段,接下来的时间要好好研究一下jeecg系统每个部分的设计细节和技术内容,有了新发现会继续写下来记录一下的。

© 著作权归作者所有

共有 人打赏支持
j
粉丝 1
博文 1
码字总数 2600
作品 0
青岛
JeeWx-api 1.0.5 版本发布,微信SDK接口封装

JeeWx-api 1.0.5 版本发布,微信SDK接口封装 1、jeewx-api为何诞生 现在微信越来越火,基于微信的公众号和服务号越来越丰富,虽然微信帮助文档已经提供了相关的接口,但是接口比较多,通过代...

Jeecg ⋅ 2015/09/08 ⋅ 0

Jeecg-P3 1.0 发布,J2EE插件开发框架

Jeecg-P3 1.0 发布了,Jeecg-P3 1.0是一个J2EE插件开发框架。 特点:业务组件以JAR方式提供,插件模式、松耦合、可插拔、支持独立部署,也可以无缝集成Jeecg平台中。 【架构说明】 1.Jeecg-...

Jeecg ⋅ 2016/03/23 ⋅ 6

互联网创业,哪些开源项目可以用?

JEECG 社区开源项目下载(总览) 反馈问题板块:http://www.jeecg.org/forum.php?mod=forumdisplay&fid=153 资源1: JEECG 微云快速开发平台( JEECG 3.6.5 云插件开发版) 最新版本:发布时间 ...

Jeecg ⋅ 2016/08/31 ⋅ 0

jeewx 部署 启动未成功的一些可能原因

jeecg数据库脚本问题 注意:jeecg3.5.2之前版本,不需要数据库脚本,程序会自动初始化数据库。从3.5.2+开始,需要手工执行SQL脚本,初始化数据库。 2. Eclipse内存溢出 2014-6-27 15:29:21 o...

王小盼 ⋅ 2016/11/09 ⋅ 4

欢迎jeecg技术爱好者加入开源团队

欢迎技术爱好者,加入JEECG开源团队!!! ================================================================= JEECG开源团队招募新成员 截止日期:2016-08-08 JEECG快速开发平台,是开源主...

Jeecg ⋅ 2016/04/11 ⋅ 0

jeecg-p3-biz-qywx,微信企业号插件发布

简介: jeecg-p3-biz-qywx微信企业号平台插件,采用jeecg-p3插件开发框架实现,可以轻量级集成进jeecg系统。 jeecg-p3-biz-qywx实现了微信企业号管理的基本功能,企业二次开发可以直接在此基...

Jeecg ⋅ 2016/06/03 ⋅ 0

Java 微服务框架 Jeecg-P3 1.0.0 重构版本发布

Jeecg-P3 微服务插件开发框架,业务组件以JAR方式提供,松耦合可插拔支持独立部署,也可无缝集成Jeecg平台。 当前版本:v1.0.0(重构版)| 2018-05-31 项目介绍: Jeecg-P3是一个微服务框架,...

Jeecg ⋅ 05/31 ⋅ 0

JAVA插件开发框架--Jeecg-p3

Jeecg-P3,J2EE插件开发框架 特点:业务组件以JAR方式提供,插件模式、松耦合、可插拔、支持独立部署,也可以无缝集成Jeecg平台中。 架构说明: 1.Jeecg-P3 采用SpringMvc + Minidao + Veloc...

Jeecg ⋅ 2016/03/23 ⋅ 2

关于Jeecg互联网化dubbo改造方案

随着互联网化越来越走近生活,国家也在推广互联网+,传统的垂直应用架构无法应对,所以我设想对jeecg进行垂直服务化拆分。 借助dubbo官网提供 从节点的角色可以看出 Provider: 暴露服务的服务...

Jeecg ⋅ 2016/08/03 ⋅ 0

【入门教程】Jeecg-P3开发环境搭建入门(java插件开发框架)

一、项目工程说明 jeecg-p3-web | 启动主项目 jeecg-p3-biz-demo | 插件项目 注意:项目为maven工程,采用maven方式导入eclipse等IDE开发工具 标准开发工具:eclipse + jdk7 + tomcat7 + my...

Jeecg ⋅ 2016/03/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java的Excel导出工具类

首先在POM中引入需要的Jar <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency><dependency><groupId>o......

Kxvz ⋅ 1分钟前 ⋅ 0

Java 3DES加密解密

import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.binary.Base64; //算法代码[java] view plain copy /** * 转换成十六进制字......

说回答 ⋅ 8分钟前 ⋅ 0

php 浮点型计算精度问题

今天碰到一个金额计算的问题,浮点数做差,结果有误(精度有问题)。 $a = floatval('6');$b = floatval('4.99');$m = floatval('1');$r = $a - $b;$r = $r - $m;var_dump($r);//f...

stupidboy ⋅ 30分钟前 ⋅ 0

Mahout推荐算法之SlopOne

一、 算法原理 有别于基于用户的协同过滤和基于item的协同过滤,SlopeOne采用简单的线性模型估计用户对item的评分。如下图,估计UserB对ItemJ的偏好 图(1) 在真实情况下,该方法有如下几个...

xiaomin0322 ⋅ 35分钟前 ⋅ 0

LVM讲解

LVM是什么 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地...

李超小牛子 ⋅ 44分钟前 ⋅ 0

mysql更改密码、连接mysql、mysql常用命令

1. 更改mysql的root账户密码: mysql中root账户和系统root不是一个账户 1.1 更改环境变量PATH,增加mysql绝对路径 由于mysql安装目录为/usr/local/mysql/,所以系统不能直接使用mysql,需把/...

laoba ⋅ 45分钟前 ⋅ 0

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP、电商系统等软件开发,商标、商品LOGO、VI、产品包装设计、营销推广、大数据人...

猫耳m ⋅ 45分钟前 ⋅ 0

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP、电商系统等软件开发,商标、商品LOGO、VI、产品包装设计、营销推广、大数据人...

阿里云云栖社区 ⋅ 49分钟前 ⋅ 0

1.03-Maven中使用ueditor富文本编辑器

起因:在maven仓库未找到百度的ueditor的jar包 操作: 1.下载百度的ueditor的jar包 2.打开命令行,切换到ueditor的下载位置,运行一下命令: mvn install:install-file -Dfile=ueditor-1.1....

静以修身2025 ⋅ 54分钟前 ⋅ 0

几道Spring 面试题

1、BeanFactory 接口和 ApplicationContext 接口有什么区别? ApplicationContext 接口继承BeanFactory接口 Spring核心工厂是BeanFactory BeanFactory采取延迟加载,第一次getBean时才会初始...

职业搬砖20年 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部