JeecgBoot入门
最近在了解低代码平台,其中关注到gitee
上开源项目JeecgBoot
,JeecgBoot
官方也有比较完整的入门教学文档,这里我们将耕者官方教程学习,并将其记录下来。
一、项目简介
JeecgBoot
是一款基于代码生成器的低代码开发平台拥有零代码能力;
- 采用前后端分离架构:
SpringBoot2.x
,Ant Design&Vue
,Mybatis-plus
,Shiro
,JWT
; - 强大的代码生成器让前后端代码一键生成,无需写任何代码!
JeecgBoot
引领新的开发模式(Online Coding
模式-> 代码生成器模式-> 手工MERGE
智能开发), 帮助解决Java
项目70%
的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省成本,同时又不失灵活性!JeecgBoot
还独创在线开发模式(No-Code
概念):在线表单配置(表单设计器)、移动配置能力、工作流配置(在线设计流程)、报表配置能力、在线图表配置、插件能力(可插拔)等等!
1.1 微服务架构图
1.2 系统架构图
二、开发环境准备
2.1 开发环境搭建
前端环境准备:
后端环境软件:
这里将所有软件打包整理好, 可以一次性下载。
2.1.1 nvm
安装
由于我的电脑之前已经安装过v16.15.1
版本,因此这里我首先需要卸载之前安装的版本;
C:\Users\Administrator>node -v
v16.15.1
直接通过windows
程序管理器卸载即可。
前往官网下载nvm
,选择一个路径安装,注意:安装路径中不能包含中文或有空格的路径。
安装完成后打开cmd
,输入如下命令显示nvm
的版本号即表示安装成功;
C:\Users\Administrator>nvm version
1.1.12
打开安装目录,找到settings.txt
文件,双击打开它;
增加以下配置后保存(使用淘宝镜像):
root: E:\Program Files\nvm
path: E:\Program Files\nodejs
# 配置node镜像:
node_mirror: https://npmmirror.com/mirrors/node/
# 配置npm镜像:
npm_mirror: https://npmmirror.com/mirrors/npm/
2.1.2 node
安装
重新打开cmd
,查看可以安装的node
版本;
C:\Users\Administrator>nvm list available
| CURRENT | LTS | OLD STABLE | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
| 23.1.0 | 22.11.0 | 0.12.18 | 0.11.16 |
| 23.0.0 | 20.18.0 | 0.12.17 | 0.11.15 |
| 22.10.0 | 20.17.0 | 0.12.16 | 0.11.14 |
| 22.9.0 | 20.16.0 | 0.12.15 | 0.11.13 |
| 22.8.0 | 20.15.1 | 0.12.14 | 0.11.12 |
| 22.7.0 | 20.15.0 | 0.12.13 | 0.11.11 |
| 22.6.0 | 20.14.0 | 0.12.12 | 0.11.10 |
| 22.5.1 | 20.13.1 | 0.12.11 | 0.11.9 |
| 22.5.0 | 20.13.0 | 0.12.10 | 0.11.8 |
| 22.4.1 | 20.12.2 | 0.12.9 | 0.11.7 |
| 22.4.0 | 20.12.1 | 0.12.8 | 0.11.6 |
| 22.3.0 | 20.12.0 | 0.12.7 | 0.11.5 |
| 22.2.0 | 20.11.1 | 0.12.6 | 0.11.4 |
| 22.1.0 | 20.11.0 | 0.12.5 | 0.11.3 |
| 22.0.0 | 20.10.0 | 0.12.4 | 0.11.2 |
| 21.7.3 | 20.9.0 | 0.12.3 | 0.11.1 |
| 21.7.2 | 18.20.4 | 0.12.2 | 0.11.0 |
| 21.7.1 | 18.20.3 | 0.12.1 | 0.9.12 |
| 21.7.0 | 18.20.2 | 0.12.0 | 0.9.11 |
| 21.6.2 | 18.20.1 | 0.10.48 | 0.9.10 |
This is a partial list. For a complete list, visit https://nodejs.org/en/download/releases
安装想要的版本,命令:nvm install
+ 版本号,例如:
C:\Users\Administrator>nvm install 20.15.0
Downloading node.js version 20.15.0 (64-bit)...
Extracting node and npm...
Complete
npm v10.7.0 installed successfully.
Installation complete. If you want to use this version, type
nvm use 20.15.0
使用要用的node
版本,命令:nvm use
+ 版本号,例如:
C:\Users\Administrator>nvm use 20.15.0
Now using node v20.15.0 (64-bit)
查看当前正在使用的版本,命令:
C:\Users\Administrator>node -v
v20.15.0
2.1.3 pnpm
安装
全局安装pnpm
:
npm install pnpm -g
验证pnpm
版本:
C:\Users\Administrator>pnpm -v
9.12.3
2.1.4 JDK17
下载JDK17
,直接无脑下一步安装,此时我的电脑已经安装了三个版本;
安装完成后配置环境变量。找到此电脑右键->属性->高级系统设置->环境变量。
找到系统变量->Path
编辑,添加:D:\Program Files\Java\jdk-17\bin
打开命令行控制台输入命令:
C:\Users\Administrator>java --version
java 17.0.11 2024-04-16 LTS
Java(TM) SE Runtime Environment (build 17.0.11+7-LTS-207)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.11+7-LTS-207, mixed mode, sharing)
2.1.5 maven
我电脑之前已经安装了3.6.1
版本,这个版本可以不用升级,因此我就不安装高版本了。
2.1.6 mysql
这里我将mysql
安装到我的云服务器上,将如下install.sh
脚本和mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
文件拷贝到/data
路径下,然后运行安装脚本即可安装mysql
;
其中:mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
包下载路径如下:https://pan.baidu.com/s/1HTwF8nVxrg1JCUt5MEOxbg?pwd=j9nr
提取码:j9nr
。
# /bin/bash
# 参考 https://blog.csdn.net/atongmu2017/article/details/90610444
# mysql安装包路径
mysql_tar=/data/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
install_path=/data
mysql_pwd=test123!@#
if [[ ! -f ${mysql_tar} ]];then
echo 'mysql安装包不存在'
exit 0
fi
if [[ -d ${install_path}/mysql ]];then
echo 'mysql已经安装..................'
exit 0
fi
#解压
echo '开始解压mysql安装包................'
tar -xvf ${mysql_tar}
mv mysql-8.0.13-linux-glibc2.12-x86_64 mysql
mv mysql ${install_path}
# 创建用户和用户组
echo '开始创建用户和用户组..................'
cd ${install_path}
groupadd mysql
useradd -r -g mysql mysql
cd mysql
chown -R mysql:mysql ./
passwd mysql ${mysql_pwd}
#初始化数据库,并会自动生成随机密码,记下等下登陆要用
echo '开始初始化数据库...................'
mkdir data
password=`bin/mysqld --initialize --user=mysql --basedir=./ --datadir=./data 2>&1 | grep 'root@localhost:' | awk '{print $13}' `
if [[ $? != 0 ]] ; then
echo 'mysql安装失败'
else
echo 密码是${password}
fi
#修改/usr/local/mysql当前目录得用户
chown -R root:root ./
chown -R mysql:mysql data
#开始配置/etc/my.cnf
mysql_cnf=/etc/my.cnf
if [[ -f ${mysql_cnf} ]];then
echo ${mysql_cnf}文件已经存在
mv ${mysql_cnf} ${mysql_cnf}.bak
fi
echo 开始创建${mysql_cnf}......
touch ${mysql_cnf}
echo "[mysqld]" > ${mysql_cnf}
echo "basedir = ${install_path}/mysql" >> ${mysql_cnf}
echo "datadir = ${install_path}/mysql/data" >> ${mysql_cnf}
echo "socket = /tmp/mysql.sock" >> ${mysql_cnf}
echo "log-error = ${install_path}/mysql/data/error.log" >> ${mysql_cnf}
echo "pid-file = ${install_path}/mysql/data/mysql.pid" >> ${mysql_cnf}
echo "tmpdir = /tmp" >> ${mysql_cnf}
echo "port = 3306" >> ${mysql_cnf}
echo "max_allowed_packet=32M" >> ${mysql_cnf}
echo "default-authentication-plugin = mysql_native_password" >> ${mysql_cnf}
echo "log_bin_trust_function_creators = ON" >> ${mysql_cnf}
echo "sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES" >> ${mysql_cnf}
#开始自启动
echo '设置mysql开机自启动........'
cd support-files
cp mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
if [[ -f ${install_path}/mysql/lib ]];then
echo ${install_path}/mysql/lib文件已经存在
else
echo "${install_path}/mysql/lib" >> /etc/ld.so.conf
fi
#配置环境变量
echo "export PATH="'$PATH'":${install_path}/mysql/bin:${install_path}/mysql/lib" >> /etc/profile
source /etc/profile
#启动服务
echo `service mysql start`
#连接数据库
mysql -u root -p ${password}
alter user 'root'@'localhost' identified by "${mysql_pwd}";
#开启navcat远程连接
use mysql;
select host, user, authentication_string, plugin from user;
update user set host='%' where user='root';
flush privileges;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY "${mysql_pwd}";
FLUSH PRIVILEGES;
exit;
安装完成后mysql
密码为test123!@#
。
2.1.7 redis
2.1.7.1 下载
这里我同样将redis
安装到我的云服务器上;
ubuntu@VM-4-9-ubuntu:/data$ sudo wget http://download.redis.io/releases/redis-7.0.0.tar.gz
下载完成后需要将压缩文件解压,输入以下命令解压到当前目录;
sudo tar -zvxf redis-7.0.0.tar.gz
解压后在根目录上输ls
列出所有目录会发现与下载redis
之前多了一个redis-7.0.0.tar.gz
文件 redis-7.0.0
的目录。
2.1.7.2 编译安装
进入 redis-7.0.0
目录,输入命令make
执行编译命令,接下来控制台会输出各种编译过程中输出的内容;
sudo make MALLOC=lib
编译完成后输出如下命令安装:
sudo make PREFIX=/usr/local/redis install
这里多了一个关键字 PREFIX=
这个关键字的作用是编译的时候用于指定程序存放的路径,比如我们现在就是指定了redis
必须存放在/usr/local/redis
目录。
ubuntu@VM-4-9-ubuntu:/data/redis-7.0.0$ ll /usr/local/redis/
drwxr-xr-x 2 root root 4096 Nov 3 23:35 bin/
这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis
即可删除redis
。
将默认的redis.conf
拷贝到自己定义好的一个路径下,比如/usr/local/redis/etc
;
ubuntu@VM-4-9-ubuntu:/data/redis-7.0.0$ sudo mkdir /usr/local/redis/etc
ubuntu@VM-4-9-ubuntu:/data/redis-7.0.0$ sudo cp redis.conf /usr/local/redis/etc
2.1.7.3 配置
修改redis.conf
配置文件。这里列举下比较重要的配置项;
配置项名称 | 配置项值范围 | 说明 |
---|---|---|
daemonize | yes、no | yes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行 |
port | 指定redis监听端口,默认端口为6379 | |
bind | 绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。 | |
protected-mode | yes 、no | 保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接redis服务则需要将此属性改为no。 |
timeout | 300 | 当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能 |
loglevel | debug、verbose、notice、warning | 日志级别,默认为 notice |
databases | 16 | 设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到 |
rdbcompression | yes、no | 指定存储至本地数据库时是否压缩数据,默认为 yes,redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。 |
dbfilename | dump.rdb | 指定本地数据库文件名,默认值为 dump.rdb |
dir | 指定本地数据库存放目录 | |
requirepass | 设置 redis 连接密码,如果配置了连接密码,客户端在连接 redis 时需要通过AUTH |
|
maxclients | 0 | 设置同一时间最大客户端连接数,默认无限制,redis 可以同时打开的客户端连接数为 redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。 |
maxmemory | XXX |
指定 redis 最大内存限制,redis 在启动时会把数据加载到内存中,达到最大内存后,redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。配置项值范围列里XXX为数值。 |
这里我们需要修改如下几个配置项:
- 这里我要将
daemonize
改为yes
,不然我每次启动都得在redis-server
命令后面加符号&
,不这样操作则只要回到Linux
控制台则redis
服务会自动关闭’ - 将
bind
注释,将protected-mode
设置为no
;这样启动后我就可以在外网访问了; - 设置
requirepass
为redis!@#
;
在目录/usr/local/redis
输入下面命令启动redis
;
cd /usr/local/redis
./bin/redis-server ./etc/redis.conf
查看redis
进程是否在运行;
ubuntu@VM-4-9-ubuntu:/usr/local/redis$ ps -aux | grep redis
ubuntu 3765549 0.0 0.1 39692 3600 ? Ssl 23:45 0:00 ./bin/redis-server *:6379
ubuntu 3765588 0.0 0.1 11508 2484 pts/1 S+ 23:45 0:00 grep --color=auto redis
2.2 启动后端项目
有关idea
的安装这里我就不介绍了,网上相关资料太多了。接着我们去下载jeecg-boot
源码;
G:\project\PHM>git clone https://gitee.com/jeecg/JeecgBoot.git
Cloning into 'JeecgBoot'...
remote: Enumerating objects: 32761, done.
remote: Counting objects: 100% (5928/5928), done.
remote: Compressing objects: 100% (3718/3718), done.
remote: Total 32761 (delta 2106), reused 5159 (delta 1501), pack-reused 26833
Receiving objects: 100% (32761/32761), 60.60 MiB | 5.10 MiB/s, done.
Resolving deltas: 100% (15779/15779), done.
Updating files: 100% (3129/3129), done.
项目目录结构如下;
使用idea
加载项目jeecg-boot
。
2.2.1 初始化数据库
使用navcat
工具连接云服务器上的mysql
数据库,执行sql
脚本 jeecg-boot/db/jeecgboot-mysql-5.7.sql
;
脚本作用:会自动创建库jeecg-boot
, 并初始化数据 。
2.2.2 安装maven
依赖
通过右侧父POM
进行install
(下载依赖和打包);
2.2.3 修改配置文件
配置文件: jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml
;
修改数据库配置:
spring:
datasource:
dynamic:
datasource:
master:
url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: test123!@#
driver-class-name: com.mysql.cj.jdbc.Driver
修改redis
配置;
spring:
redis:
database: 0
host: 127.0.0.1
port: 6379
password: redis!@#
2.2.4 启动项目
右键执行下面类,启动项目
jeecg-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java
2.2.5 访问接口文档
http://localhost:8080/jeecg-boot/doc.html
页面如下:
2.3 启动前端项目
使用webstorm
加载项目jeecgboot-vue3
。
2.3.1 下载依赖
执行命令pnpm i
或者双击 pinstall
;
依赖安装成功提示:
2.3.2 配置后端接口
修改接口地址 env.development
;
\# 跨域代理,您可以配置多个, 请注意没有换行符 VITE_PROXY = [["/jeecgboot","http://localhost:8080/jeecg-boot"],["/upload","http://localhost:3300/upload"]] #后台接口全路径地址(必填) VITE_GLOB_DOMAIN_URL=http://localhost:8080/jeecg-boot
2.3.3 启动项目
在终端输入pnpm dev
启动前端项目,看到如下日志则启动成功;
2.3.4 访问系统
通过 http://localhost:3100
访问前端项目,默认账号密码: admin/123456
;
参考文章
[1] JeecgBoot
开发文档