一图读懂 若依后端

一图读懂 若依后端

  • 关注我,评论区评论就能获得思维导图本体文件啦😄。如果你愿意关注我的掘金就更好啦宝😍,因为我掘金文章就一内内人看,想引流😋
    https://juejin.cn/user/1942157160101860
  • 本图是对若依后端的基本介绍图,若依的代码很多部分不是简单的增删改查,所以看完本文,也不能敢说能对若依了如指掌,只能说会有一个大概的认识。但对你阅读若依源码肯定是有帮助的 😉
  • 背景色是 荀子蓝
    image-20240909104555060
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

从后端读懂若依

整体认识

  • .github

    • 赞助,里面存放了一个放着赞助链接
  • bin

    • 批处理文件,有用于打包的package.bat,清理项目的clean.bat,运行的run.bat
  • doc

    • 放word文档的,
  • ruoyi-admin

    • 后台服务,这里有前端的controller,但没有任何mapper、service层代码
  • ruoyi-system

    • 后台服务、framework的附属实现。前两个负责吹牛逼(我系统有文件上传功能,访问xx就能生成xx),这个模块负责实现吹的牛逼
  • ruoyi-common

    • 一看这个名字就知道存放了一些通用的妙妙小工具
  • ruoyi-framework

    • 直接看名字就知道什么意思啦,若依-框架。是若依的核心
  • ruoyi-generator

    • 若依的代码生成功能,这个模块删除也没有什么问题。也因此这一段代码的mapper啊,service什么的都是在本模块以内的
  • ruoyi-quartz

    • 若依的定时任务,这个模块删掉也没有什么问题
  • ruoyi-ui

    • 若依前端,vue2版本
  • SQL

    • 里面有两个数据库表,都很简单,开箱即用

      • quartz.sql

        • 定时任务Quartz数据库,从数据库表名也可也看出,都以Quartz
      • ry_20240629.sql

        • 分别配置若依系统本身运行所要用的(sys 开头),代码生成运行起来的数据库(gen开头)
  • .gitignore

    • git提交排除文件
  • LICENSE

    • 开源证书MIT,开源证书就是指定这个代码到底开源到什么程度?用来赚钱会不会涉及到侵权?MIT好像是最开放的一类证书了
  • pom.xml

    • 依赖管理 应该很熟悉了呀
  • README.md

    • 项目说明文档 每个项目都有
  • ry.bat

  • ry.sh

    • 管理后端的

ruoyi-admin

  • com.ruoyi.web

    • 这里就是系统前端相对应的后台服务部分

      • controller:通用功能的前端控制器。若依有一个很有意思的点,那就是它的代码的前端控制器,mapper,service不是放在同一个模块里的,而是分开来放。

        • common:通用的东西存放的地方

          • 一个验证码生成验证,一个文件资源的操作验证
        • monitor:系统监控功能

          • CacheController

            • 缓存管理,通过Spring Data Redis来实现,博主也不懂具体细节,只是有所耳闻
          • ServerController

            • 服务器信息获取接口,只有拥有monitor:server:list 权限的人才能访问
          • SysLogininforController

            • 一个系统登录的日志记录类,通过ruoyi-system中的代码来操作,而system中通过异步工厂和操作SysOperLog来实现各种日志功能
          • SysOperlogController

            • 系统操作日志记录类,实现方式一样
          • SysUserOnlineController

            • 用户监控,查看用户列表和强制退出用户功能
        • system

          • controller的代码存放在ruoyi-admin中的system,而ruoyi-systeam中存放了实体类、mapper、service。这个文件夹下面各种系统通用功能,比如角色管理的增删改查,比如使用ip+端口号访问的页面显示、数字字典等等

            • 这种设计算是在admin中重点重视配置、前端表现。而system则负责具体的业务逻辑和代码。分离的不错。之前做项目的时候,如果没有这样的模块分散,那配置文件和逻辑处理代码乌泱泱的在一块,看着懵懂。
        • tool:工具类存放的地方

          • 这里只存放一个测试请求的类,一个测试用户的类
      • core.config:存放核心配置,在这里存放了Swagger的配置

  • RuoYiApplication

    • 整个项目的启动类,没有什么好说的
  • RuoYiServletInitializer

    • 这个关系到SpringBoot的启动原理,SpringBoot内置了一个tomacat,然后使用约定大于配置的思想,给你配置了一些常见的项。所以使用SpringBoot能够如此方便快捷。而这个类的作用就是能让SpringBoot项目不使用自己内部的tomacat来运行,而是可以使用外部的Servlet容器。

      • tomacat是一个Servlet容器,但Servlet容器不止tomacat。Servlet也没有什么神秘的,可以简单理解为一个驱动程序,不过驱动程序链接了操作系统和电脑硬件。而servlet容器链接着java应用程序和http服务器

ruoyi-system

  • 整个模块都没什么好讲的,在认识若依上。这个模块的作用就是实现ruoyi-admin中的种种功能。系统日志、增删改查。

    • 其他模块都会有自己的config之类的,只有这个没有。因为这个模块是一个附属模块

ruoyi-common

  • annotation:自定义注解

    • 各种注解
  • config:全局配置

    • SensitiveJsonSerializer

      • 做了个数据脱敏处理,使得普通用户看不到一些内容。比如电话号码遮盖几位
    • RuoYiConfig

      • 配置了各种文件、图片上下传的路径
  • constant:通用常量和通用枚举一个概念,枚举和常量类的各有各好,枚举类本身是一种类型,所以使用枚举类来定义系统的各种状态(成功、失败)。而常量类的值可以是数字、字母。

  • core:核心控制(重点)

    • controller里面有一个BaseController
  • enums:通用枚举

    • 枚举没啥好讲的呀,项目中使用枚举一般来说都是添加项目可维护性。不然改一个值,得到处找代码
  • exception:通用异常(重点)

    • 各种异常
  • filter:过滤器

    • 各种过滤器,还有防止xss的过滤器
  • utils:通用工具类

    • 不解释了呀,工具类挺多的,我还看到获取地理位置之类的
  • xss:xss校验

    • xss就是有人编写一段js脚本给浏览器执行,浏览器一执行就把cookie、用户聊天记录暴露了。我虽然不知道咋处理,但我一读代码,看若依的操作检测你的输入是不是html标签,如果是,不让你输入,并且提示不允许任何脚本执行

      • 也确实是个办法,应该没有人会把作为自己的用户名吧?

ruoyi-generator

ruoyi-quartz

ruoyi-framework

  • aspectj:一些自定义的AOP

  • config:各种系统配置,挑几个讲一讲吧

    • DruidConfig.java

      • 高性能数据连接池DruidConfig
    • FastJson2JsonRedisSerializer.java

    • MyBatisConfig.java

    • RedisConfig.java

      • redis缓存机制配置文件
    • ResourcesConfig.java

      • 静态资源配置文件
    • SecurityConfig.java

      • spring的安全配置文件
    • ServerConfig.java

      • 获取服务器相关信息的
    • PermitAllUrlProperties.java

      • 配置公开的URL
  • datacource

    • 用于需要多个数据库的情况
  • interceptor

    • 一个防止重复提交的东西
  • manager

    • 异步处理,将任务执行和主线程分开
  • security

    • 权限控制
  • web

    • domain

      • 硬件本身信息和jvm
    • exception

      • 全局异常处理器
    • service

      • 处理权限与用户注册等

img

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。

代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦😍

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号

更多专栏:
  • 📊 一图读懂系列

  • 📝 一文读懂系列

  • ⚽ Uniapp

  • 🌟 持续更新

  • 🤩 Vue项目实战

  • 🚀 JavaWeb

  • 🎨 设计模式

  • 📡 计算机网络

  • 🎯 人生经验

  • 🔍 软件测试

掘金账号 CSDN账号

感谢订阅专栏 三连文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/876262.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基础GAN生成式对抗网络(pytorch实验)

(Generative Adversarial Network) 一、理论 https://zhuanlan.zhihu.com/p/307527293?utm_campaignshareopn&utm_mediumsocial&utm_psn1815884330188283904&utm_sourcewechat_session 大佬的文章中的“GEN的本质”部分 二、实验 1、数…

Java | Leetcode Java题解之第403题青蛙过河

题目&#xff1a; 题解&#xff1a; class Solution {public boolean canCross(int[] stones) {int n stones.length;boolean[][] dp new boolean[n][n];dp[0][0] true;for (int i 1; i < n; i) {if (stones[i] - stones[i - 1] > i) {return false;}}for (int i 1…

Oracle 11gR2打PSU补丁详细教程

1 说明 Oracle的PSU&#xff08;Patch Set Update&#xff09;补丁是Oracle公司为了其数据库产品定期发布的更新包&#xff0c;通常每季度发布一次。PSU包含了该季度内收集的一系列安全更新&#xff08;CPU&#xff1a;Critical Patch Update&#xff09;以及一些重要的错误修…

效率神器来了:AI工具手把手教你快速提升工作效能

随着科技的进步&#xff0c;AI工具已经成为提升工作效率的关键手段。本文将介绍一些实用的AI工具和方法&#xff0c;帮助你自动化繁琐的重复性任务、优化数据管理、促进团队协作与沟通&#xff0c;并提升决策质量。 背景&#xff1a;OOP AI-免费问答学习交流-GPT 自动化重复性任…

【Linux】【Vim】Vim 基础

Vim/Gvim 基础 文本编辑基础编辑操作符命令和位移改变文本重复改动Visual 模式移动文本(复制、粘贴)文本对象替换模式 光标移动以 word 为单位移动行首和行尾行内指定单字符移动到匹配的括号光标移动到指定行滚屏简单查找 /string标记 分屏vimdiff 文本编辑 基础编辑 Normal 模…

【网络安全的神秘世界】渗透测试基础

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 渗透测试基础 基于功能去进行漏洞挖掘 1、编辑器漏洞 1.1 编辑器漏洞介绍 一般企业搭建网站可能采用了通用模板&#xff…

app抓包 chrome://inspect/#devices

一、前言&#xff1a; 1.首先不支持flutter框架&#xff0c;可支持ionic、taro 2.初次需要翻墙 3.app为debug包&#xff0c;非release 二、具体步骤 1.谷歌浏览器地址&#xff1a;chrome://inspect/#devices qq浏览器地址&#xff1a;qqbrowser://inspect/#devi…

Lombok:Java开发者的代码简化神器【后端 17】

Lombok&#xff1a;Java开发者的代码简化神器 在Java开发中&#xff0c;我们经常需要编写大量的样板代码&#xff0c;如getter、setter、equals、hashCode、toString等方法。这些代码虽然基础且必要&#xff0c;但往往占据了大量开发时间&#xff0c;且容易在属性变更时引发错误…

华为OD机试 - 计算误码率(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

怎么将几个pdf合成为一个?把几个PDF合并成为一个的8种方法

怎么将几个pdf合成为一个&#xff1f;将多个PDF文件合并成一个整体可以显著提高信息整合的效率&#xff0c;并简化文件的管理与传递。例如&#xff0c;将不同章节的电子书合成一本完整的书籍&#xff0c;或者将多个部门的报告整合成一个统一的文档&#xff0c;可以使处理流程变…

CCS811二氧化碳传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 ccs811.h文件 ccs811.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 CCS811模块是一种气体传感器&#xff0c;可以测量环境中TVOC(总挥发性有机物质)浓度和eCO2…

6.接口测试加密接口(Jmeter/工具/函数助手对话框、Beanshell脚本)

一、接口测试加密接口&#xff0c;签名接口 1.加密算法&#xff1a; 可以解密的&#xff1a; 对称式加密&#xff08;私钥加密&#xff09;&#xff1a;AES&#xff0c;DES&#xff0c;Base64 https://www.bejson.com 非对称加密&#xff08;双…

Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)

Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络) 文章目录 Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)前言一、Ubuntu依赖安装二、创建操作目录, 下载build_chain.sh脚本2.1 先…

Linux-Swap分区使用与扩容

一、背景 在Linux系统中&#xff0c;swap空间&#xff08;通常称为swap分区&#xff09;是一个用于补充内存资源的重要组件。当系统的物理RAM不足时&#xff0c;Linux会将一部分不经常使用的内存页面移动到硬盘上的swap空间中&#xff0c;这个过程被称为分页&#xff08;paging…

【JavaEE初阶】多线程(4)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 线程安全的 第四个原因 代码举例: 分析原因 解决方法 方法1 方法2 wait(等待)和notify(通知) wait和sleep区别 线程安全的 第四个原因 内存可见性,引起的线程安全问…

CloudXR 套件扩展 XR 工作流

NVIDIA为开发者提供了一个先进的平台&#xff0c;开发者可以在该平台上使用全新NVIDIA CloudXR 套件来创建可扩展、品牌化的定制扩展现实&#xff08;XR&#xff09;产品。 NVIDIA CloudXR 套件基于全新架构而打造&#xff0c;是扩展XR生态的重要工具。它为开发者、专业人士和…

彻底理解浅拷贝和深拷贝

目录 浅拷贝实现 深拷贝实现自己手写 浅拷贝 浅拷贝是指创建一个新对象&#xff0c;这个对象具有原对象属性的精确副本 基本数据类型&#xff08;如字符串、数字等&#xff09;&#xff0c;在浅拷贝过程中它们是通过值传递的&#xff0c;而不是引用传递&#xff0c;修改值并不…

Git项目管理工具

分布式版本控制系统

数据集 wider person 户外密集行人检测 >> DataBall

数据集 wider person 用于野外密集行人检测的多样化数据集 行人检测 目标检测 户外密集行人检测的多样化数据集 WiderPerson: A Diverse Dataset for Dense Pedestrian Detection in the Wild article{zhang2019widerperson, Author {Zhang, Shifeng and Xie, Yiliang and Wa…

常用环境部署(二十)——docker部署OpenProject

一、安装Docker及Docker-compose https://blog.csdn.net/wd520521/article/details/112609796 二、docker拉取OpenProject镜像 1、拉取镜像 docker pull openproject/openproject:14 注意&#xff1a; 拉取镜像的时候会有超时的现象出现&#xff0c;大家重新拉取几次就行…