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

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

🎼个人主页:【Y小夜】

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

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

🎆入门专栏:🎇【MySQLJava基础Rust

🎈热门专栏:🎊【PythonJavawebVue框架

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

🎯 分组校验

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

🎃导入依赖

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

🎃定义分组

public interface CreateGroup { } public interface UpdateGroup { } 

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

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方法省略... } 

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

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中激活环境

Read more

SpringBoot 整合多数据源:从基础切换到动态路由全解析

SpringBoot 整合多数据源:从基础切换到动态路由全解析

在实际开发中,单数据源往往无法满足复杂的业务场景 —— 比如读写分离、分库分表、不同业务模块对接不同数据库等。SpringBoot 作为主流的开发框架,提供了多种多数据源整合方案,从简单的静态切换到灵活的动态路由,每种方案都有其适用场景。本文将从实际业务需求出发,拆解 SpringBoot 中多数据源的核心实现方式,并附上可直接运行的代码示例。 一、多数据源核心场景与技术选型 先明确多数据源的常见使用场景,避免盲目选型: * 静态多数据源:不同业务模块固定对接不同数据库(如订单库、用户库),启动时加载,运行时不切换; * 动态切换数据源:运行时根据条件(如用户 ID、业务标识)动态选择数据源(如读写分离、分库); * 分布式事务:多数据源操作需保证事务一致性(本文暂不展开,后续单独讲解)。 核心依赖(基于 SpringBoot 2.7.x): xml <dependencies> <!-- SpringBoot核心

By Ne0inhk
小迪安全2023-2024|第14天:信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ爬虫&笔记|web安全|渗透测试|

小迪安全2023-2024|第14天:信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ爬虫&笔记|web安全|渗透测试|

小迪安全2023-2024|第14天:信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ爬虫&笔记|web安全|渗透测试| 一、前端JS打点 00:06 1. 业务资产分类 00:35 * Web资产:包括语言/CMS/中间件/数据库/系统/WAF等 * 系统资产:包含操作系统/端口服务/网络环境/防火墙等 * 应用资产:涉及APP对象/API接口/微信小程序/PC应用等 * 架构资产:涵盖CDN/前后端/云应用/站库分离/OSS资源等 * 技术资产:包含Js爬虫/敏感扫描/端口扫描/

By Ne0inhk
实战:Spring Boot 2.7.8 原生 SSE 服务端开发

实战:Spring Boot 2.7.8 原生 SSE 服务端开发

目录 前言 一、SSE知识简介 1、SSE是什么 2、SSE工作原理 3、SSE适用场景 二、SpringBoot中SSE的实现 1、Maven中引入 2、SSE服务类实现 3、SSE控制器类实现 4、最简单页面实现 三、成果展示 1、SSE连接 2、群发消息 3、点对点消息 四、总结 前言         在当今的互联网应用开发中,实时数据交互的需求日益增长。无论是股票交易系统中实时更新的股价信息,还是社交平台上的即时消息推送,亦或是物联网场景下传感器数据的实时传输,都对后端服务提出了更高的要求。传统的轮询机制虽然简单,但效率低下且资源消耗大;而WebSocket虽然功能强大,但在某些场景下显得过于复杂且实现成本较高。在这种背景下,Server-Sent Events(SSE)作为一种轻量级的、基于HTTP协议的单向实时通信技术,逐渐受到开发者的关注。         SSE允许服务器主动向客户端推送数据,而无需客户端频繁发起请求,

By Ne0inhk

Node.js完整安装配置指南(包含国内镜像配置)

Node.js完整安装配置指南(包含国内镜像配置) 一、Node.js安装 方法1:使用Chocolatey安装(推荐) # 安装最新LTS版本 choco install nodejs # 或安装指定版本 choco install nodejs --version=20.11.0 方法2:官网下载安装 1. 访问 Node.js官网 2. 下载LTS版本(推荐) 3. 运行安装程序,勾选"Add to PATH"选项 方法3:使用国内镜像下载 # 从淘宝镜像下载# 访问: https://npmmirror.com/mirrors/node/# 选择对应版本下载 二、

By Ne0inhk