Day 19:02. 基于 SpringBoot4 开发后台管理系统-项目初始化

一、前言

类似的优秀的开源产品有很多 Ruoyi, el-admin 等等,如果你已经在这个行业工作了 3-5 年,我相信你手上也有自己的后台管理系统模版,哪怕他可能只是个半成品。

程序员必经之路:搭博客,写框架,然后不断地推倒重来。😄

俺也一样,github.com/Caoshenyang... EZ-ADMINEZ 取自 "easy" 谐音,我想要整一个简单易用的后台管理系统,基础功能都已经实现了,我平时的一些 MVP , 就是用这个来快速实现的。这次我将在这个基础上升级为 springboot 4 的版本,并且进一步完善他。

二、创建项目

创建成功后,启动项目

三、一些小调整

3.1. 将配置文件改成 yaml 格式

个人行为,我还是比较习惯 yaml 格式的写法,你也可以不改

3.2. 修改 pom 文件

  • 删除了一些不用的空标签,模版自带的
  • 配置阿里云仓库镜像

文章后面我会贴出完整的 pom 文件,所以这里我就不展示代码了。

四、ORM 框架选择

ORM 框架有很多,主流的像 mybatisJPA,以及国产的 Jfinal 等等。这里我就不一一列举了,我主要就在 MyBatisSpring Data JPA 中进行选择。

工作中,这两个我都用过,所以从功能以及生态来说,都很完善。

  • MyBatisMyBatis-Plus 增强工具,使用起来非常方便,一些简单的增删改查甚至不用写任何 SQL,有完善的插件体系,基本涵盖了所有日常开发中的场景。
  • JPA 作为 Spring 官方首选的持久层解决方案,深度集成于 Spring 生态,通过 Repository 抽象层提供高度声明式的数据访问方式,同样很强大。

具体细节对比,网上有很多专门做对比的文章,我就不细说了,这里我列出了核心的几点比较。

维度 MyBatis + MyBatis-Plus JPA + Spring Data JPA
核心理念 SQL映射框架 对象关系映射(ORM)框架
技术定位 "Sql is Code" 理念的增强实现 符合 JPA 标准的官方 ORM 方案
核心优势 SQL 控制力 + 开发效率的完美平衡 声明式编程 + 深度框架集成
关键差异 拥抱SQL,认为SQL是强大的资产。 隐藏SQL,认为数据库细节不应污染业务代码。
适用场景 需要精细控制 SQL 的复杂业务系统 快速迭代、领域驱动的新项目

这里我选择 Spring Data JPA

  • 首先第一点契合 Spring Boot 4
  • 其次作为后台管理项目,业务简单;
  • 最后一点,因为现在大多数都是 MyBatis-Plus,我想再试试 Spring Data JPA (我还是 2018 年的时候公司项目用过)。

五、数据库选择

这里的数据库指的是关系型数据库,基本上就 MySQLPostgreSQL 二选一,这里因为我选择的是 Spring Data JPA 标准的 ORM 框架,其实对于数据库的切换也是很方便的,所以其实无论选择哪个,后续切换的成本其实都不高。这里我选择 PostgreSQL ,因为我没用过,对!就是这个原因。我早就听闻 PostgreSQL 的强大,并且据说在某些方面已经超越了 MySQL,成为了现在开发的首选数据库了。

出于好奇,以及对于知识探索的渴望,我决定使用 PostgreSQL

这里列出一下我搜集到的核心对比

特性 MySQL PostgreSQL
核心理念 "简单、快速、实用",偏向互联网应用 "功能强大、标准、严谨",偏向传统企业级应用
SQL标准兼容 遵循标准,但更注重实用性和灵活性 严格遵循SQL标准,兼容性最好
架构特点 进程模型(旧版)/ 线程模型(新版) 进程模型

六、Spring Data JPA + PostgreSQL 实现一个简单的增删改查

这里我本来是想将每一步都写出来的,怎么引入依赖,有哪些版本变更,后面发现,太繁琐了,有点啰嗦,好像又回到了多年前那种博客模式,所以思索再三,我将这一节的内容全部删除了。下面是完整的代码,后续也会一直更新,github.com/Caoshenyang...

我也不太喜欢在博客里搞一堆代码,看起来就很枯燥。

七、总结

在从技术选型到项目创建的过程中,我思考了很多:是稳妥地沿用自己熟悉的技术栈,走一遍已经验证过的老路?还是勇敢尝试不太熟悉的新方案,借机突破自己的舒适区?最终,我选择了后者。

这也正是我想传递的一个理念:不要被所谓"技术栈"束缚住手脚。不要因为没接触过就望而却步。我们首先是程序员,而不是仅仅被定义为"前端"或"后端"。在面对具体业务需求时,我们才是项目的主宰者。要对自己有充分的信心,像搭积木一样从容构建系统,根据实际需要选择合适的组件或工具,而不是被技术标签所限制。

相关推荐
学习路上_write1 小时前
FREERTOS_任务通知——使用
java·前端·javascript
Y淑滢潇潇1 小时前
RHCE Day 7 SHELL概述和基本功能
linux·前端·rhce
www_stdio1 小时前
深入理解 Promise 与 JavaScript 原型链:从基础到实践
前端·javascript·promise
Undoom1 小时前
openEuler iSula 容器引擎关键性能指标量化评测
后端
暮紫李1 小时前
项目中如何强制使用pnpm
前端
q_19132846951 小时前
基于Springboot2+Vue2的旅游景点购票系统
java·vue.js·spring boot·后端·mysql·毕业设计·计算机毕业设计
哈哈哈笑什么1 小时前
基于RabbitMQ的企业级订单系统设计与实现
后端
LSTM971 小时前
使用 Java 实现条形码生成与识别
后端
哈哈哈笑什么1 小时前
如何防止恶意伪造前端唯一请求id
前端·后端