开源项目之架构分享[通俗易懂]

开源项目之架构分享[通俗易懂]此次分享是我当初在开发某个系统时,参考的一些开源项目架构的思路和风格。第一个是Jeesite,它的架构风格如下:大家如果对jeesite感兴趣的话,可以百度搜索找到,不过那已经是半年多以前的事情,jeesite目前也发生较大的变化。当初我在参考jessite这个思路时,不知道是什么原因使我没有加入module,其实从现在的角度出发,加上module也是一件不错的事情,modu…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

此次分享是我当初在开发某个系统时,参考的一些开源项目架构的思路和风格。

第一个是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友友们共勉。

转载于:https://www.cnblogs.com/youcong/p/9800717.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164737.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • npm卸载安装

    npm卸载安装npm安装卸载命令利用npm安装xxx模块到当前命令行所在目录:npminstallxxx利用npm安装全局模块xxx:npminstall-gxxx安装但不写入package.json:npminstallxxx安装并写入package.json的”dependencies”中:npminstallxxx–save安装并写入package.json的”d…

    2022年10月25日
  • Redis客户端中文乱码[通俗易懂]

    Redis客户端中文乱码[通俗易懂]Redis客户端中文乱码$redis-cliredis127.0.0.1:6379>set’name”中文’OKredis127.0.0.1:6379>get’name’"\xd6\xd0\xce\xc4"redis127.0.0.1:6379>客户端查看乱码,这个情况我们只要将修改客户端命令行就可以。redis-cli –raw$r…

    2022年5月7日
  • 使用 PyCharm 远程调试 Django 程序「建议收藏」

    使用 PyCharm 远程调试 Django 程序「建议收藏」这阵子组内流行使用Django写管理端程序。大家习惯了在Windows上使用PyCharm等IDE快速方便地进行开发,但是由于管理端使用了一些公司的公共组件,而这些组件又只提供了Linux上的Python接口,因此必须在Linux上运行Django程序。值得庆幸的是,大多数的IDE都提供了远程调试功能,PyCharm也可以经过简单配置进行远程调试。场

    2022年8月28日
  • c语言中位运算符_位运算符的用法

    c语言中位运算符_位运算符的用法C语言的运算符是一个很有意思的东西,运用起来可以解决很多麻烦的事,但是想要灵活应用也有一定的难度,总结一下c语言运算符的用法和一些常用技巧.一.C语言位运算符简介C语言的位运算符有六种,分别是:>>  右移运算符&   按位与运算符|   按位或运算符^   按位异或运算符~   按位取反运算符这些运算符都是对于基本数据类型的二进制位进行操作的,这

    2022年10月4日
  • 如何解压war包_tomcat自动解压war包

    如何解压war包_tomcat自动解压war包使用WinRAR即可解压,同目录下创建一个.zip文件,右键打开方式->WinRAR压缩文件管理器“向上”,到文件目录选择要解压的文件,点击“解压到”,解压到你想要的目录即可java中的war格式的压缩包怎么解压?你好,这些是打包好的部署包,将这些直接丢如TomcatWebApp目录下就可以通过Web访问了,如果你想看源码,用解压缩软件都可以的,就看这包里面有没有源码了,zip,win…

    2022年10月5日
  • pycharm配置文件路径_pycharm添加解释器

    pycharm配置文件路径_pycharm添加解释器搭建Python环境1.下载安装python首先进入python官网https://www.python.org/2.点击windows3.如图所示,点击python3.8.34.在下载页面选择如图所示的下载安装包5.下载完之后,开始安装,按下图所示勾选,然后进入用户设置页面customizeinstallation6.按照图示勾选,然后next7.勾选installforalluse…

    2022年8月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号