开源项目之架构分享
此次分享是我当初在开发某个系统时,参考的一些开源项目架构的思路和风格。
第一个是Jeesite,它的架构风格如下:
大家如果对jeesite感兴趣的话,可以百度搜索找到,不过那已经是半年多以前的事情,jeesite目前也发生较大的变化。
当初我在参考jessite这个思路时,不知道是什么原因使我没有加入module,其实从现在的角度出发,加上module也是一件不错的事情,module即模块,通过模块来扩展功能,这与我目前以service来扩展功能的思路不谋而合。
jeesite的common思路,我现在也一直再采用,common目前主要是放置常用工具类,不过,因为我们引入了Hutools开源项目,目前common主要是一些数据传输类,例如dto、queryvo或者是其他自定义工具类等等。
jeesite的core思路,我并没有采用,我还是按照service思路,公共模块,例如菜单,权限,用户,组织我将其抽象为一个公共service。
jeesite的web思路,与我现在的做法是一样,不过我考虑的是,一旦后期模块拆分分布式之类的,我可以轻松的通过service思路分离,不过我的service模块耦合度要尽可能低,内聚性高,不然的话,一旦拆分意味着重构,要知道能不重构尽量不重构,重构是一件痛苦的事情。很多中小公司开发团队,时常犯的错误就是为了实现功能,代码质量不做丝毫考虑,当然了,客观上也是因为业务的紧急性和迫切性不得不为之。记得第一个项目给我的阴影已经足够多了,我不想再因为代码质量的问题,陷入无止休的死循环中(改bug,改bug,这是一件要命的事情)。
另外jeesite的一个亮点就是技术选型,它的技术选型,可以说是目前java开发者们,无论是后台还是前端都是比较熟悉的,而且目前资料也十分齐全,学习起来也不是特别难。不过,jeesite还是没有开源,这也是我当初没有采用它的一个重要原因,在我看来,开源意味着源代码对外开放,一旦有问题,我可以通过看源代码来解决,尽管有看不懂的可能性存在,但是好歹可以看吧,看总比不能看要好,这也是我一贯的作风。
第二个是iBase4j,它的架构风格如下:
它的这个就更好理解了
iBase4j-Biz-Facade 存放 entity,service等
iBase4j-Biz-Service 存放dao及其xml和实现类,还有配置类等
iBase4j-Biz-Web 存放对应的controller还有配置类
不过我个人觉得它的这个架构设计不是特别好
要是我来设计的话,iBase4j-Biz-Facade我会直接entity,dao,service还有xml文件,iBase4j-Biz-Service专门放实现类,我个人觉得这样看起来无论是从视觉上,还是逻辑上看,都比iBase4j原生设计要好。
当然了,有句话说的好,“情人眼里出西施”或者是“一百个人一百个哈姆莱特”。总而言之,每个人都有每个人的想法。
至于iBase4j-SYS相关的其实与我上面说的iBase4j-Biz是一样的道理。
第三个是人人开源(renrne-security),它的架构如下:
它的这个架构,我认为适合SpringBoot应用开发,renren-admin通常就是后台管理系统,renrne-api用于管理接口文档可作为独立的应用也可以引入admin中,common就不必多说,我想在上面的jeesite中已经说得很详细了。generator,web在线代码生成器,我也写过,感兴趣的可以参考我的这篇博客:https://www.cnblogs.com/youcong/p/9494892.html (JavaWeb在线代码生成器)
我觉得人人开源的这个比较与我接近,所以在多租户架构设计时,我最先想到的就是人人开源,只不过我没有理解好它们之间的关系,同时也没有考虑到技术的局限性,为此我付出了一周多的时间成本。
renren-generator生成的代码,点击表打成zip包(支持批量选择),不过我觉得我的在线代码生成器比它好,但是唯一不足的是,我没有考虑到权限,因此我的代码生成器不是特别完美,但是对于提高开发效率还是有一定的帮助。
总结:
今天分享的一共三个开源项目,分别是jeesite、iBase4j、人人开源等。
分享这三个项目,我要告诉大家的不是学会怎么用,而是有的时候,在开发设计的时候,如果自己没有思路的话,特别是架构设计,可以参考下开源项目,也许你会有意向不到的收获。
记得荀子说过一句话,“君子性非异也,善假于物也”。以此话,与IT友友们共勉。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源项目之kisso
kisso开源项目:https://gitee.com/baomidou/kisso 一、简介 kisso = cookie sso 基于 Cookie 的 SSO 中间件,它是一把快速开发 java Web 登录系统(SSO)的瑞 士军刀。 应用场景如下: 1.支持单点登录 2、支持登录Cookie缓存 3、支持防止 xss攻击, SQL注入,脚本注入 4、支持 Base64 / MD5 / AES / PBE / RSA 算法 5、支持浏览器客户端校验 6、支持Cookie参数配置及扩展 7、支持跨域登录,模拟登录 8、支持在线人数统计 9、支持生成动态图片验证码 10、支持 app 移动端 api 服务验证,采用微信公众平台 api 验证机制认证 11、支持踢出指定登录用户 二、kisso 是什么原理与 cas 区别 1.kisso原理说明 kisso 采用的是加密会话 cookie 机制实现单点登录 SSO 服务,具备“无状态”、“分散验证” 等特性。 a.session 存放在服务器端,cookie 存放在客户端,存在 2 种状态: 第一种:持久 cookie 具 有时效性,...
- 下一篇
webpack基础
webpack-基础貌似这些属于编译原理的内容。当时看了一点编译原理,当中的自动机,彻底懵。不过大概了解了一点内容。感觉webpack一个打包工具非常类似于一个编译器,将一个文件,转换为另外一个文件。 一些概念 入口 入口,即寻找入口文件的及其依赖项的文件。即编译前的文件配置文件为webpack.config.js中修改为 module.exports = { entry: "./app.js" } 使用这个可以设置入口文件为./app.js由该文件,可以寻找相关的依赖 出口 output告诉要生成那些文件 const path = require("path"); module.exports = { entry: "./app.js", output: { filename: "my-first-webpack.js" } } 导出该文件 loader loader可以让webpack处理非js文件。 module: { rules: [ {test: /\.txt$/, use: 'raw-loader'} // 再遇到txt文件的时候,需要使用ras-loader进行转换一下 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS6,CentOS7官方镜像安装Oracle11G