若依框架-后端架构(一)
项目中的结构:
前后端分离版本分为6个子模块,子模块的依赖
<groupId>com.ruoyi</groupId> <artifactId>ruoyi</artifactId> <version>3.7.0</version>
项目模块化对于开发者来讲没有任何写法上的区别,但是对于维护和功能细分有很大好处,打*的表示重要
*ruoyi-admin
基础业务部分
- 程序的主入口:启动类RuoYiApplication
- swagger的配置
- 通用的请求处理:上传文件、下载文件
- 登录的验证码生成
- 系统监控:缓存redis监控、服务器监控、系统的登录日志管理、系统操作日志管理、在线用户查看
- 系统管理控制层:系统参数配置、部门信息、数据字典信息、登录接口/获取路由信息/获取用户信息、菜单信息管理、公告信息管理、岗位信息管理、个人信息管理、角色信息管理、用户信息管理
- yml文件:数据库地址/主从/是否开启慢sql记录、redis地址、jwt、xss
*ruoyi-common
配置和工具部分
- 自定义注解:数据权限过滤、多数据源切换注解、导出excel配置注解、操作日志注解、访问过频注解
- 静态常量配置:项目信息常量、项目的通用常量、代码生成器的通用常量、http返回状态的通用常量、任务task的通用常量配置、用户/角色/部门等常量配置
- 封装工具类:redis、处理字符、类型转换、bean处理、文件处理、excel处理、日期运算、线程相关工具类、spring工具类等
- 各类异常封装:基础异常、文件信息异常、task任务调度异常、用户信息异常等自定义异常实体类
- 过滤器工具类:xss防注入等
- 通用枚举类
*ruoyi-framework
框架部分
- Aop切面:权限校验、数据源切换、记录操作日志,配合注解ruoyi-commond的注解
- 系统配置:数据库Druid配置、验证码配置、拦截器配置、过滤器配置、redis配置、WebMvcConfigurer配置、SpringSecurity配置、获取服务器地址配置、线程池配置------------------读取yml文件数据,注入spring容器
- 通过过滤器来防止重复提交、登录token验证、处理和返回登录结果;通过异步定时线程ScheduledExecutorService记录登录日志(有点不明白为什么要用定时线程来延迟10毫秒)
- 全局异常捕捉和抛出
ruoyi-generator
用来代码生成,只需要关心怎么使用就行,可以把自己系统的业务代码都放到这里
ruoyi-quartz
定时任务,不建议和服务项目打包一起使用,因为如果配置多个相同项目会产生的多次执行问题,可以通过中间件、锁解决,但会增加系统复杂度(你可能把握不住),最简单的办法是进行功能抽离,在分布式架构中单独部署
ruoyi-system
- 是ruoyi-common子模块的service层,持久层,基本上不用动
基础数据库的表关系
项目自带sql文件,直接运行即可,关于权限的核心表之间的关系如下