主题
Spring Boot 3.0 引入了多个新特性和改进,但具体的属性变化需要根据官方文档和发布说明来确定。从 Spring Boot 2.x 升级到 3.0 的过程中,一些配置属性被重新命名、删除或添加。这里列出一些可能的变化和新增的特性,但请注意,对于具体新增的属性列表,建议直接查阅官方文档或使用 spring-boot-properties-migrator
模块帮助识别变化。
参考书
https://weread.qq.com/web/reader/43d328d0813ab8b5ag014fd1
https://weread.qq.com/web/reader/6b932700813ab83aag013f7a
Spring Boot 3支持最低的Maven版本为3.5
技术选型
当面对相同的应用场景而行业中有多种常用技术可选择时,会使用不同的技术实现,以便进行横向对比,充分了解各种技术的优点,如分别使用MyBatis和Spring Data JPA实现持久层。
Spring Data JPA底层是Hibernate引擎,可根据实体类自动建表
而当解决同一个场景问题出现技术更替,但旧技术还没有被完全淘汰时,则会进行纵向对比,如先用jQuery实现,然后替换成Vue。
权限管理模块:
使用RBAC(Role-Based Access Control,基于角色的访问控制)模型进行权限管理模块的设计。
RBAC通过角色与角色、角色与权限将用户进行关联。每个用户拥有若干个角色,每个角色拥有若干权限,这样就构成了“用户—角色—权限”的授权模型,这是当前行业中权限设计最为合理的方案。
RBAC主要涉及用户、角色、权限三个实体,它们之间是多对多的关系。

项目中的实体有Employee(员工)、Department (部门)、User(用户)、Role(角色)和Permission(权限)。其中,Employee和Department是多对一的关系,
在关系数据库中,多对一和一对多的表关系需要在多的一方建立关联列,在关联列上可以建立外键约束,也可以不建。
比如Employee和Department多对一的关系,需要在Employee类中添加类型为Department的dep属性
多对多的表关系要通过建立一张关系表来确立。
为了避免与安全框架Spring Security中User的混淆,可对用户、角色、权限三个实体名统一加“Sys”前缀。
在面向对象的设计中,SysUser类和SysRole类是多对多的关系,需要在SysUser类中添加泛型为SysRole的List类型的roles属性。
如果要建立多对多的双向关联,则需要在SysRole方添加泛型为SysUser的List类型的属性。
项目目录结构
entity包:实体包。
controller包:控制器包,即Spring MVC类存放的位置。
service包:业务逻辑接口包。
service.impl包:业务逻辑实现类包。
dao包:数据库访问接口包,即MyBatis接口存放的位置。
util包:工具包。项目所涉及的配置文件统一放到resources文件夹下。
mapper文件夹:MyBatis映射文件。
AOP
引入依赖
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
拦截微信小程序登录日志
java
@Component
@Aspect
@Slf4j
public class LogPrint {
@Before("execution(* cn.diyai.service.impl.MPServiceImpl.code2Session(..))")
public void methodBegin(JoinPoint joinPoint){
log.info("{} {} 微信小程序登录(begin)",joinPoint.getTarget(),joinPoint.getSignature());
}
@After("execution(* cn.diyai.service.impl.MPServiceImpl.code2Session(..))")
public void methodEnd(JoinPoint joinPoint){
log.info("{} {} 微信小程序登录(end)",joinPoint.getTarget(),joinPoint.getSignature());
}
}