【SpringBoot】——分组校验、自定义注解、登入验证(集成redis)、属性配置方式、多环境开发系统学习知识

news/2025/3/3 5:21:56/

🎼个人主页:【Y小夜】

😎作者简介:一位双非学校的大三学生,编程爱好者,

专注于基础和实战分享,欢迎私信咨询!

🎆入门专栏:🎇【MySQL,Java基础,Rust】

🎈热门专栏:🎊【Python,Javaweb,Vue框架】

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

🎯 分组校验

        在Spring Boot中,我们可以使用Hibernate Validator进行分组校验。Hibernate Validator是一个Java Bean验证框架,用于对Java Bean对象的数据进行校验。

🎃导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency>

🎃定义分组

java">public interface CreateGroup {
}public interface UpdateGroup {
}

🎃定义校验项时指定归属的分组

java">import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;public class User {@NotBlank(message = "姓名不能为空", groups = {UpdateGroup.class})private String name;@NotBlank(message = "用户名不能为空", groups = {CreateGroup.class, UpdateGroup.class})@Size(min = 5, max = 20, message = "用户名长度必须在5-20个字符之间", groups = {CreateGroup.class, UpdateGroup.class})private String username;// getter和setter方法省略...
}

🎃校验时指定要校验的分组 

java">import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;@RestController
public class UserController {@PostMapping("/create")public String createUser(@Validated({CreateGroup.class}) @RequestBody User user, BindingResult bindingResult) {if (bindingResult.hasErrors()) {return bindingResult.getFieldError().getDefaultMessage();}// 保存用户信息的逻辑...return "创建成功";}@PostMapping("/update")public String updateUser(@Validated({UpdateGroup.class}) @RequestBody User user, BindingResult bindingResult) {if (bindingResult.hasErrors()) {return bindingResult.getFieldError().getDefaultMessage();}// 更新用户信息的逻辑...return "更新成功";}
}

定义校验项时如果没有指定分组,则属于Default分组,分组可以继承   

🎯自定义注解

        已有的注解不能满足所有的校验需求,特殊的情况需要自定义校验(自定义校验注解)

        在Spring Boot中,自定义注解是一种强大的机制,允许开发者创建具有特殊含义的标记,用于修饰代码元素并给它们附加元数据。这些元数据可以在编译时、运行时被读取,并根据其含义执行特定的操作

        要创建一个自定义注解,需要使用Java提供的元注解来定义注解的自身属性和行为。其中最常用的包括@Target、@Retention、@Documented和@Inherited等。通过这些元注解,可以指定自定义注解的应用目标(如方法、类或字段)、保留策略(如源代码、编译期或运行期)以及是否可被继承和文档化。例如,一个简单自定义注解的定义可能如下所示:

🎯分页查询

<!-- PageHelper -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.13</version>
</dependency>

 🎯登入验证(集成redis

🎃令牌主动失效机制

  • 登录成功后,给浏览器响应令牌的同时,把该令牌存储到redis
  • LoginInterceptor拦截器中,需要验证浏览器携带的令牌,并同时需要获取到redis中存储的与之相同的令牌
  • 当用户修改密码成功后,删除redis中存储的旧令牌

🎃SpringBoot集成redis

✨导入spring-boot-starter-data-redis起步依赖

✨在yml配置文件中, 配置redis连接信息

✨调用API(StringRedisTemplate)完成字符串的存取操作

🎯SpringBoot项目部署

引入插件(在build标签中)

注意:jar包部署,要求服务器必须有jre环境

然后在j生成jar包的目录下,打开cmd窗口,运行

Java –jar jar包位置

🎯属性配置方式

🎃项目配置文件方式

这种运维人员没法修改的

🎃命令行参数方式

例如

🎃环境变量方式

🎃外部配置文件方式

🎃配置文件优先级

优先级依次增强

  • 项目中resources目录下的application.yml
  • Jar包所在目录下的application.yml
  • 操作系统环境变量
  • 命令行参数

🎯多环境开发-Pofiles

🎃单文件配置

  •  ---  分隔不同环境的配置
  • spring.config.activate.on-profile 配置所属的环境
  • spring.profiles.active 激活环境

🎃多文件配置

  • 通过多个文件分别配置不同环境的属性
  • 文件的名字为 application-环境名称.yml
  • 在application.yml中激活环境


http://www.ppmy.cn/news/1575940.html

相关文章

SpringSecurity基于JWT实现Token的处理

前面介绍了手写单点登录和JWT的应用,本文结合SpringSecurity来介绍下在SpringBoot项目中基于SpringSecurity作为认证授权框架的情况下如何整合JWT来实现Token的处理。 一、认证思路分析 SpringSecurity主要是通过过滤器来实现功能的!我们要找到SpringSecurity实现认证和校验…

科技快讯 | DeepSeek宣布开源DeepGEMM;多个团队开发AI论文反识别技术;OpenAI GPT 4.5现身Android测试版,即将发布

DeepSeek宣布开源DeepGEMM 财联社2月26日电&#xff0c;Deepseek于开源周第三天宣布开源DeepGEMM。DeepGEMM 是一个专为简洁高效的 FP8 通用矩阵乘法&#xff08;GEMM&#xff09;设计的库&#xff0c;具有细粒度缩放功能&#xff0c;如 DeepSeek-V3 中所提出。它支持普通和混合…

使用自动化运维工具 Ansible 集中化管理服务器

一、概述 Ansible 是一款为类 Unix 系统开发的自由开源的配置和自动化工具 官方网站:https://www.ansible.com/ Ansible 成立于 2013 年,总部设在北卡罗来纳州达勒姆,联合创始人 ad Ziouani 和高级副总裁 Todd Barr都是红帽的老员工。Ansible 旗下的开源软件 Ansible 十分…

go基础语法

go基础语法 先下载安装go&#xff0c;然后到vscode下载go插件 1. 基础 输入输出 package main import "fmt" func main(){a:1var b2 var c int //不给初始值得标出变量类型 c3var d stringfmt.Scanf("%s",&d) //接收用户输入fmt.Printf("Hell…

Go语言学习笔记(三)

文章目录 十一、结构体匿名结构体匿名字段 十二、方法接收器 十三、接口接口实现条件空接口类型断言 十四、IO操作Reader文件操作相关API Writerbufioioutil工具包综合示例 十五、包和go mod包包的引用格式 go mod 十一、结构体 Go语言可以通过自定义的方式形成新的类型&#x…

Microsoft.Office.Interop.Excel 的简单操作

Microsoft.Office.Interop.Excel 的简单操作 1、安装 Microsoft.Office.Interop.Excel2、声明引用 Microsoft.Office.Interop.Excel3、简单的新建 EXCEL 操作代码4、将 DataGridView 表数据写到 EXCEL 操作代码5、将 EXCEL 表数据读取到 C# 数据表 DataTable 操作代码 1、安装 …

SpringBoot中Get请求和POST请求接收参数详解

1、Get请求 1.1 方法形参接收参数 这种方式一般适用参数比较少的情况&#xff0c;并且前后端参数名称必须保持一致 RestController RequestMapping(“/user”) Slf4j public class DemoController { GetMapping("/query") public void getStudent(String name,Strin…

2025年02月21日Github流行趋势

项目名称&#xff1a;source-sdk-2013 项目地址url&#xff1a;https://github.com/ValveSoftware/source-sdk-2013项目语言&#xff1a;C历史star数&#xff1a;7343今日star数&#xff1a;929项目维护者&#xff1a;JoeLudwig, jorgenpt, narendraumate, sortie, alanedwarde…