程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 若依框架
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 若依框架
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 快速入门

    • 若依-快速入门
    • 若依-环境部署
    • 若依-项目介绍
      • 一、项目介绍
      • 二、文件结构
        • 1. 后端结构
        • 2. 前端结构
      • 三、配置文件
        • 1. 通用配置 application.yml
        • 2. 数据源配置 application-druid.yml
        • 3. 代码生成配置 generator.yml
      • 四、核心技术
        • 1. 后端技术栈
        • 2. 前端技术栈
  • 后端手册

  • 前端手册

  • 组件文档

  • 数据库分析

  • 若依框架
  • 快速入门
scholar
2024-08-31
目录

若依-项目介绍

# 若依-项目介绍

# 一、项目介绍

若依(RuoYi)是一套基于 Spring Boot + Vue.js 的前后端分离开发框架,适用于构建企业级应用。它集成了常见的技术栈,提供了完整的权限管理、代码生成、系统监控等功能模块,能够大幅提高开发效率。

# 二、文件结构

# 1. 后端结构

若依的后端代码遵循了模块化设计,以下是各个模块的详细说明:

com.ruoyi     
├── common            // 工具类
│   ├── annotation    // 自定义注解,定义用于标记特殊行为的方法或类,如权限检查、日志记录等。
│   ├── config        // 全局配置,存放系统的全局性配置类,如数据源配置、Redis 配置等。
│   ├── constant      // 通用常量,定义系统中常用的全局性常量,如状态码、用户角色等。
│   ├── core          // 核心控制,包含通用的业务逻辑和控制类。
│   ├── enums         // 通用枚举,定义系统中的枚举类型,如用户状态、操作类型等。
│   ├── exception     // 通用异常,定义系统的异常处理机制,包含自定义异常类和全局异常处理。
│   ├── filter        // 过滤器处理,存放各种 Servlet 过滤器类,用于请求的预处理或后处理。
│   └── utils         // 通用工具类,包含各种常用的工具类方法,如字符串处理、日期处理、文件操作等。
├── framework         // 框架核心
│   ├── aspectj       // 注解实现,存放 AOP 切面类,用于处理注解的具体实现逻辑,如日志记录、事务管理等。
│   ├── config        // 系统配置,包含系统的核心配置类,如安全配置、跨域配置、缓存配置等。
│   ├── datasource    // 数据权限,处理数据层面的权限控制逻辑。
│   ├── interceptor   // 拦截器,定义各种请求拦截器,如权限拦截、登录拦截等。
│   ├── manager       // 异步处理,负责处理异步任务的管理和调度,如任务队列、线程池管理等。
│   ├── security      // 权限控制,定义安全框架相关的类,如权限验证、用户认证等。
│   └── web           // 前端控制,包含 Web 层的控制类,如跨域处理、静态资源管理等。
├── ruoyi-generator   // 代码生成(可移除),提供根据数据库表自动生成代码的功能,如 CRUD 代码生成。
├── ruoyi-quartz      // 定时任务(可移除),基于 Quartz 实现的定时任务管理模块。
├── ruoyi-system      // 系统代码,存放系统的主要业务逻辑模块,如用户管理、角色管理、菜单管理等。
├── ruoyi-admin       // 后台服务,系统的主入口,包含启动类和基础配置。
├── ruoyi-xxxxxx      // 其他模块,根据业务需求新增的模块。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 2. 前端结构

若依的前端代码使用 Vue.js 开发,以下是各个文件夹的详细说明:

├── build                      // 构建相关,包含项目的构建脚本和配置文件。
├── bin                        // 执行脚本,存放项目启动和部署的脚本文件。
├── public                     // 公共文件,存放不需要编译的静态资源文件。
│   ├── favicon.ico            // favicon图标,浏览器标签页的小图标。
│   ├── index.html             // html模板,项目的主页面模板。
│   └── robots.txt             // 反爬虫文件,限制搜索引擎的爬取行为。
├── src                        // 源代码,存放主要的前端代码。
│   ├── api                    // 所有请求,定义与后端交互的 API 接口。
│   ├── assets                 // 主题、字体等静态资源,如图片、样式文件等。
│   ├── components             // 全局公用组件,定义可复用的 Vue 组件。
│   ├── directive              // 全局指令,定义 Vue 的自定义指令。
│   ├── layout                 // 布局,定义页面的整体布局结构,如头部、侧边栏等。
│   ├── plugins                // 通用方法,存放 Vue 插件和扩展功能。
│   ├── router                 // 路由,配置前端页面的路由规则。
│   ├── store                  // 全局 store管理,Vuex 状态管理,用于管理全局状态。
│   ├── utils                  // 全局公用方法,通用的工具类方法,如请求封装、权限验证等。
│   ├── views                  // 视图,定义各个页面视图组件。
│   ├── App.vue                // 入口页面,应用的根组件。
│   ├── main.js                // 入口文件,加载组件、初始化应用。
│   ├── permission.js          // 权限管理,处理路由权限的验证逻辑。
│   └── settings.js            // 系统配置,管理应用的全局配置。
├── .editorconfig              // 编码格式,定义项目的统一编码风格。
├── .env.development           // 开发环境配置,定义开发环境下的环境变量。
├── .env.production            // 生产环境配置,定义生产环境下的环境变量。
├── .env.staging               // 测试环境配置,定义测试环境下的环境变量。
├── .eslintignore              // 忽略语法检查,配置 ESlint 忽略的文件或目录。
├── .eslintrc.js               // eslint 配置项,定义 ESlint 的具体规则。
├── .gitignore                 // git 忽略项,配置 Git 忽略的文件或目录。
├── babel.config.js            // Babel配置文件,定义 JavaScript 代码的转译规则。
├── package.json               // 项目依赖文件,定义项目的依赖包和脚本命令。
└── vue.config.js              // Vue CLI配置文件,定义项目的构建配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 三、配置文件

# 1. 通用配置 application.yml

application.yml 文件是 Spring Boot 项目的核心配置文件,用于定义项目的全局性配置。以下是主要配置项的详细说明:

# 项目相关配置
ruoyi:
  # 项目名称
  name: RuoYi
  # 项目版本
  version: 3.3.0
  # 版权年份
  copyrightYear: 2021
  # 实例演示开关,控制系统是否开启演示模式
  demoEnabled: true
  # 文件上传路径,示例:Windows配置 D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath
  profile: D:/ruoyi/uploadPath
  # 获取IP地址开关,控制是否启用获取客户端IP地址功能
  addressEnabled: false
  # 验证码类型,支持 math(数学计算)和 char(字符验证)
  captchaType: math

# 开发环境配置
server:
  # 服务器的HTTP端口,默认为8080
  port: 8080
  servlet:
    # 应用的访问路径
    context-path: /
  tomcat:
    # Tomcat的URI编码
    uri-encoding: UTF-8
    # Tomcat最大线程数,默认为200
    max-threads: 800
    # Tomcat启动初始化的线程数,默认值为25
    min-spare-threads: 30

# 日志配置
logging:
  level:
    # 定义 com.ruoyi 包下的日志级别为 debug
    com.ruoyi: debug
    # 定义 Spring 框架的日志级别为 warn
    org.springframework: warn

# Spring 配置
spring:
  # 国际化资源信息配置
  messages:
    # 国际化资源文件路径
    basename: i18n/messages
  profiles: 
    # 指定当前活动的配置文件,默认为 druid
    active: druid
  # 文件上传配置
  servlet:
     multipart:
       # 设置单个文件的最大上传大小为10MB
       max-file-size: 10MB
       # 设置总上传文件的最大大小为20MB
       max-request-size: 20MB
  # 开发工具配置
  devtools:
    restart:
      # 开启热部署功能
      enabled: true
  # Redis 配置
  redis:
    # Redis 服务器地址
    host: localhost
    # Redis 服务器端口,默认值为6379
    port: 6379
    # 使用的数据库索引,默认值为0
    database: 0
    # Redis 连接密码(可选)
    password: 
    # 连接超时时间,默认10秒
    timeout: 10s
    # Redis 连接池配置
    lettuce:
      pool:
        # 连接池中的最小空闲连接数
        min-idle: 0
        # 连接池中的最大空闲连接数
        max-idle: 8
        # 连接池的最大连接数
        max-active: 8
        # 连接池最大阻塞等待时间,使用负值表示没有限制
        max-wait: -1ms

# Token 配置
token:
    # 令牌自定义标识,默认使用 Authorization
    header: Authorization
    # 令牌密钥,用于签名和验证令牌
    secret: abcdefghijklmnopqrstuvwxyz
    # 令牌有效期,默认30分钟
    expireTime: 30

# MyBatis 配置
mybatis:
    # 搜索指定包中的别名
    typeAliasesPackage: com.ruoyi.**.domain
    # 配置 Mapper 的扫描路径,找到所有的 Mapper.xml 映射文件
    mapperLocations: classpath*:mapper/**/*Mapper.xml
    # 加载全局的配置文件
    configLocation: classpath:mybatis/mybatis-config.xml

# PageHelper 分页插件配置
pagehelper: 
  # 数据库方言,默认使用 MySQL
  helperDialect: mysql
  # 是否合理化分页查询,启用后分页参数不合理时会自动调整
  reasonable: true
  # 是否支持方法参数分页,启用后可以通过方法参数传递分页信息
  supportMethodsArguments: true
  # 分页插件的参数配置,默认使用 countSql 计算总数
  params: count=countSql 

# Swagger 配置
swagger:
  # 是否开启 Swagger 文档,开发环境下建议开启
  enabled: true
  # 请求前缀,默认为 /dev-api
  pathMapping: /dev-api

# 防止 XSS 攻击配置
xss: 
  # 过滤开关,控制是否启用 XSS 过滤
  enabled: true
  # 排除链接,多个用逗号分隔,指定不需要过滤的链接
  excludes: /system/notice/*
  # 匹配链接,指定需要过滤的链接
  urlPatterns: /system/*,/monitor/*,/tool/*
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

# 2. 数据源配置 application-druid.yml

application-druid.yml 文件用于配置项目的数据源信息,默认使用阿里巴巴的 Druid 数据库连接池。以下是主要配置项的详细说明:

# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源配置
            master:
                # 数据库连接地址
                url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                # 数据库用户名
                username: root
                # 数据库密码
                password: password
            # 从库数据源配置(可选)
            slave:
                # 从数据源开关,默认关闭
                enabled: false
                url: 
                username: 
                password: 
            # 初始连接数,连接池初始化时创建的连接数
            initialSize: 5
            # 最小连接池数量,连接池中保持的最小连接数
            minIdle: 10
            # 最大连接池数量,连接池中保持的最大连接数
            maxActive: 20
            # 获取连接等待超时的时间,单位为毫秒
            maxWait: 60000
            # 连接空闲时间检测周期,间隔多久检测空闲连接,单位为毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 连接最小空闲时间,空闲连接在池中最小生存时间,单位为毫秒
            minEvictableIdleTimeMillis: 300000
            # 连接最大空闲时间,空闲连接在池中最大生存时间,单位为毫秒
            maxEvictableIdleTimeMillis: 900000
            # 检测连接是否有效的查询语句,默认使用 SELECT 1 FROM DUAL
            validationQuery: SELECT 1 FROM DUAL
            # 是否在空闲时检测连接的有效性
            testWhileIdle: true
            # 是否在借用连接时检测连接的有效性
            testOnBorrow: false
            # 是否在归还连接时检测连接的有效性
            testOnReturn: false
            # Druid 监控配置
            webStatFilter: 
                enabled: true
            statViewServlet:
                enabled: true
                # 设置白名单,允许访问监控的 IP 列表,不填则允许所有访问
                allow:
                # 监控页面的 URL 路径
                url-pattern: /druid/*
                # 控制台管理用户名
                login-username: 
                # 控制台管理密码
                login-password: 
            filter:
                stat:
                    enabled: true
                    # 慢 SQL 记录开关,是否记录执行时间超过指定毫秒数的 SQL
                    log-slow-sql: true
                    # 慢 SQL 执行时间,单位为毫秒
                    slow-sql-millis: 1000
                    # 是否合并 SQL,开启后相同的 SQL 语句只记录一次
                    merge-sql: true
                wall:
                    config:
                        # 是否允许多条 SQL 语句同时执行,默认允许
                        multi-statement-allow: true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

# 3. 代码生成配置 generator.yml

generator.yml 文件用于配置代码生成器的相关信息,以下是主要配置项的详细说明:

# 代码生成配置
gen: 
  # 作者,生成的代码文件中会标注作者信息
  author: ruoyi
  # 默认生成包路径,指定生成代码的包路径,建议根据模块名称修改
  packageName: com.ruoyi.system
  # 是否自动去除表前缀,默认值为 false
  autoRemovePre: false
  # 表前缀,指定要去除的表前缀,多个前缀用逗号分隔,生成类名时不包含这些前缀
  tablePrefix: sys_
1
2
3
4
5
6
7
8
9
10

# 四、核心技术

若依框架采用了当前主流的前后端技术栈,以下是各个技术栈的详细说明:

# 1. 后端技术栈

  • Spring Boot:一个开箱即用的 Java 框架,提供了各种默认配置,简化了 Spring 应用的配置和开发流程。主要特点包括:

    • 内嵌 Web 容器(如 Tomcat、Jetty),无需额外部署。
    • 支持自动配置,减少冗余代码。
    • 提供运行时监控和健康检查功能。
  • MyBatis:一个优秀的持久层框架,支持自定义 SQL、存储过程以及高级映射,方便地处理数据库操作。

    • 提供简单的 XML 配置和注解方式进行 SQL 映射。
    • 支持动态 SQL 生成,简化复杂查询的实现。
  • Spring Security:一个强大的安全框架,用于保护基于 Spring 的企业应用程序。主要功能包括:

    • 认证:用户身份验证,通过配置或数据库查询验证用户身份。
    • 授权:访问控制,判断用户是否有权限访问特定资源。
    • 防护:提供 XSS 攻击、CSRF 防护、Session 管理等安全防护功能。
  • Jwt:JSON Web Token,用于前后端分离项目中的用户认证和信息传递。

    • JWT 包含用户身份信息,并使用密钥进行签名,确保信息的完整性和安全性。
    • 支持跨域认证,减少了会话管理的复杂性。

# 2. 前端技术栈

  • npm:Node.js 的包管理工具,用于管理项目中的依赖包、插件和工具,便于统一管理和维护。

  • ES6:ECMAScript 6 是 JavaScript 的下一代标准,提供了许多新特性,如箭头函数、解构赋值、模板字符串等,简化了 JavaScript 的代码编写。

  • Vue.js:一款渐进式的 JavaScript 框架,用于构建用户界面。它的核心库只关注视图层,非常容易上手。Vue.js 提供了:

    • 组件化:将 UI 分解成独立的、可复用的组件。
    • 响应式:数据的变化会自动更新到视图中。
    • 虚拟 DOM:通过虚拟 DOM 实现高效的 DOM 更新。
  • vue-router:Vue.js 官方的路由管理器,用

于构建单页面应用。它允许开发者使用声明式的方式配置路由,支持:

  • 动态路由匹配:根据 URL 渲染不同的组件。

  • 路由守卫:在路由切换前后执行自定义逻辑。

  • 嵌套路由:支持多层次的路由嵌套,构建复杂的页面结构。

  • Vuex:Vue.js 官方的状态管理工具,用于在不同组件间共享状态。主要功能包括:

    • 全局状态管理:集中管理应用中的所有状态。
    • 数据持久化:通过插件支持持久化状态,如存储到 localStorage。
    • 热重载:支持模块化和热重载,提高开发效率。
  • element-ui:基于 Vue.js 的开源 UI 组件库,提供了一套完整的 UI 组件,用于快速构建美观的用户界面。它包含:

    • 表单组件:如输入框、选择器、开关等,满足各种表单需求。
    • 布局组件:如栅格系统、布局容器等,帮助快速构建响应式布局。
    • 数据展示组件:如表格、树形控件等,方便数据的可视化展示。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
若依-环境部署
分页实现

← 若依-环境部署 分页实现→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式