Java JWT 配置类 (JwtProperties) 学习笔记
1. 核心作用:
此类 (JwtProperties) 作为一个集中的“配置信息持有者”,专门用来存储项目中与 JWT(JSON Web Token,一种用于身份验证的令牌)相关的配置参数。
2. 关键注解说明:
-
@Component
:- 含义:将这个 Java 类标记为一个“组件”,并交由 Spring IoC 容器管理。
- 作用:Spring 会自动创建这个类的实例(对象/Bean),我们可以在项目的其他地方方便地注入和使用这个实例,而不需要手动
new
它。
-
@ConfigurationProperties(prefix = "sky.jwt")
:- 含义:声明这是一个“配置属性类”。
prefix = "sky.jwt"
:指定了配置文件(如application.properties
或application.yml
)中相关配置项的“前缀”。- 作用:Spring Boot 会自动读取配置文件中所有以
sky.jwt.
开头的配置项,并将它们的值赋给这个类中对应名称的属性。- 例如,配置文件中的
sky.jwt.admin-secret-key = myAdminKey
会自动赋值给类中的adminSecretKey
属性(Spring Boot 支持短横线命名到驼峰命名的自动转换)。
- 例如,配置文件中的
-
@Data
(Lombok):- 含义:Lombok 库提供的注解。
- 作用:自动为类中的所有字段(属性)生成标准的
getter
、setter
方法、toString()
、equals()
和hashCode()
方法,以及一个接收所有final
字段的构造函数。极大简化了样板代码的书写。
3. JwtProperties
类中的属性示例及其用途:
Java
// @Component
// @ConfigurationProperties(prefix = "sky.jwt")
// @Data
public class JwtProperties {// 管理端配置private String adminSecretKey; // 管理员JWT签名密钥 (字符串,用于加密和验证令牌)private long adminTtl; // 管理员JWT有效期 (长整型,通常为毫秒)private String adminTokenName; // 管理员JWT在请求中传递时使用的名称 (例如:"Admin-Token", "Authorization")// 用户端配置private String userSecretKey; // 用户JWT签名密钥private long userTtl; // 用户JWT有效期private String userTokenName; // 用户JWT在请求中传递时使用的名称
}
4. 工作流程小结:
Spring 启动时 -> 扫描到 @Component,创建 JwtProperties 实例 -> 看到 @ConfigurationProperties,读取 application.properties 中 sky.jwt. 开头的配置 -> 将配置值通过 @Data 提供的 setter 方法(或直接赋值)填充到 JwtProperties 实例的对应属性中 -> 项目中其他地方可以通过注入这个 JwtProperties 实例来获取这些配置值(jwtProperties.getAdminSecretKey())。