【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

【机器人零件】行星减速器

行星减速器 行星减速器作为精密传动系统的核心部件,在现代工业中扮演着至关重要的角色。本文将全面介绍行星减速器的减速比计算公式、提供C++代码实现实例,并详细分析其应用场景和使用条件。通过深入理解这些内容,工程师和技术人员能够更准确地选择、设计和应用行星减速器,满足各种机械传动需求。 行星减速器基本原理与结构组成 行星减速器,又称行星齿轮减速器,是一种采用行星轮系传动原理的精密减速装置。其基本结构由四个主要部件构成:位于中心的太阳轮(Sun Gear)、围绕太阳轮旋转的行星轮(Planetary Gear)、固定不动的内齿圈(Ring Gear)以及连接行星轮的行星架(Planetary Carrier)。这种独特的结构使得行星减速器能够在紧凑的空间内实现高减速比和大扭矩输出。 行星减速器的工作原理基于齿轮啮合理论,通过太阳轮、行星轮和内齿圈之间的相互作用实现动力传递和转速降低。当电机或其他动力源驱动太阳轮旋转时,行星轮不仅会绕自身轴线自转,还会在行星架的带动下绕太阳轮公转。这种复合运动通过行星架输出,实现减速和增扭的效果。由于多个行星轮同时参与啮合,载荷被均匀分散,这使得行星

By Ne0inhk
组建龙虾团队——OpenClaw多机器人构建

组建龙虾团队——OpenClaw多机器人构建

成功搭建了OpenClaw,也成功建立的自己的每日服务,这时候发现,似乎不太敢在当前的机器人中让他做别的事情,生怕会话太多会让他出现遗忘。(尽管我们配置了QMD记忆增强,但毋庸置疑任何技术都是有上限的)。 换做同样的情况,比如在DeepSeek或者豆包之类的对话窗口,我们会习惯性地新建一个对话。那么我们是否可以新建一个机器人,或者多个机器人,让他们各司其职,各尽所能,形成一个相互配合的团队呢~开干吧,没什么不可能的!! 🦞新建一个机器人 来到飞书开发者后台,新创建一个应用,在这里我们以短视频剪辑脚本应用为例。 创建之后,由于我们的openclaw绑定的是之前的飞书渠道,并没有链接到这个应用的APP ID,所以暂时不做其他操作,只需要记录一下他的APP ID和APP Secret。 🦞配置OpenClaw 如果还是按照claw的命令行安装,每一步都有些让人担心害怕,毕竟我们先前已经配置过一次了,接下来的操作,需要小心是否会把以前的配置给覆盖掉。 为了避免这样的不确定性,我们直接去操作他的配置文件 在WSL2终端中进入openclaw目录 cd .openclaw

By Ne0inhk
openclaw 对接完飞书群机器人配置踩坑记:消息不回、Gateway 断开问题排查

openclaw 对接完飞书群机器人配置踩坑记:消息不回、Gateway 断开问题排查

前言 用 OpenClaw 配飞书机器人,踩了两个坑:群消息不回、Gateway 总是断开。排查了好一阵子,总算搞定了,记录一下希望能帮到遇到同样问题的朋友。 发现问题 飞书消息不回复 在飞书群里 @ 了机器人,完全没反应。一开始以为是网络不好或者机器人没上线,但状态显示明明是连接着的,这就奇怪了。 Gateway 频繁断开 每次改完配置跑 openclaw gateway restart,或者根本什么都没干,Gateway 说断就断。再想启动就报错,必须跑一遍 openclaw doctor --fix 重新安装才能用。太影响使用了。 查看原因 飞书机器人 ID 搞错了 翻日志看到这么一句: receive events or callbacks through persistent connection only available in

By Ne0inhk

Home Assistant Matter Hub 终极配置指南:5步实现跨平台智能家居互联

Home Assistant Matter Hub 终极配置指南:5步实现跨平台智能家居互联 【免费下载链接】home-assistant-matter-hubPublish your Home-Assistant Instance using Matter. 项目地址: https://gitcode.com/gh_mirrors/ho/home-assistant-matter-hub 想要让您的Home Assistant智能家居系统与Apple Home、Amazon Alexa等主流平台无缝连接吗?Home Assistant Matter Hub正是您需要的解决方案!这个开源项目能够将Home Assistant实例通过Matter协议发布,实现真正的跨品牌设备互联。Matter作为新一代智能家居连接标准,打破了传统生态壁垒,让不同厂商的设备能够相互通信协作。 🎯 什么是Home Assistant Matter Hub? Home Assistant Matter Hub是一个基于TypeScript开发的智能家居桥接工具,它充当了Home Assistant

By Ne0inhk