SpringBoot多方面研习:分组校验、自定义注解、Redis登录验证与环境配置综合学习

2周前发布 gsjqwyl
7 0 0

文章标题:

SpringBoot多维度学习:分组校验、自定义注解、Redis登录验证与环境配置综合探究

🎯 分组校验

在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环境

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

Java –jar jar包位置

🎯属性配置方式

🎃项目配置文件方式

这类配置运维人员通常无法进行修改

🎃命令行参数方式

例如

🎃环境变量方式

🎃外部配置文件方式

🎃配置文件优先级

优先级依次递增
– 项目中resources目录下的application.yml
– Jar包所在目录下的application.yml
– 操作系统环境变量
– 命令行参数

🎯多环境开发-Pofiles

🎃单文件配置

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

🎃多文件配置

  • 通过多个文件分别对不同环境的属性进行配置
  • 文件的名字为 application-环境名称.yml
  • 在application.yml中激活环境
© 版权声明

相关文章

暂无评论

暂无评论...