当前位置: 首页 > news >正文

JJWT 核心工具类 Jwts 源码解析

1. 类概述

Jwts 类是 JJWT 库的工厂类,提供了创建 JWT 相关组件(Header、Claims、Builder、Parser)的静态方法。它是一个不可实例化的工具类,所有方法都是静态的。

public final class Jwts {private Jwts() {} // 私有构造器防止实例化
}

 

 

2. 核心方法解析

2.1 Header 相关方法

作用

  • 创建 JWT 头部信息

  • Header 是通用头部接口

  • JwsHeader 是带签名的 JWT 头部,扩展了 Header 接口

// 创建默认Header
public static Header header() {return new DefaultHeader();
}// 从现有Map创建Header
public static Header header(Map<String, Object> header) {return new DefaultHeader(header);
}// 创建JWS Header (带签名)
public static JwsHeader jwsHeader() {return new DefaultJwsHeader();
}// 从现有Map创建JWS Header
public static JwsHeader jwsHeader(Map<String, Object> header) {return new DefaultJwsHeader(header);
}

 2.2 Claims 相关方法

 

// 创建空的Claims
public static Claims claims() {return new DefaultClaims();
}// 从现有Map创建Claims
public static Claims claims(Map<String, Object> claims) {return new DefaultClaims(claims);
}

作用

  • 创建 JWT 的载荷部分(claims)

  • Claims 接口扩展了 Map<String, Object>,提供了一些标准 claim 的便捷方法

2.3 Parser 和 Builder

// 创建JWT解析器
public static JwtParser parser() {return new DefaultJwtParser();
}// 创建JWT构建器
public static JwtBuilder builder() {return new DefaultJwtBuilder();
}

 

作用

  • JwtParser 用于解析和验证 JWT

  • JwtBuilder 用于构建新的 JWT

 

3. 设计模式分析

3.1 工厂模式

Jwts 类是一个典型的静态工厂类,提供了创建各种 JWT 组件的统一入口。

优点:

  • 隐藏具体实现类(DefaultHeaderDefaultClaims等)

  • 简化客户端代码

  • 便于未来实现类的替换

3.2 不可变对象

从方法签名可以看出,大多数方法返回的都是接口类型(HeaderClaims等),而不是具体实现类。这种设计:

  • 遵循面向接口编程原则

  • 隐藏实现细节

  • 便于扩展和维护

4. 典型使用示例

4.1 创建 JWT

 4.2 解析 JWT

5.扩展性考虑

如果需要扩展功能,可以:

  1. 实现自己的 Header 或 Claims 实现

  2. 通过 header(Map) 或 claims(Map) 方法传入自定义实现

  3. 创建自定义的 JwtParser 或 JwtBuilder 实现

这种设计使得 JJWT 库既提供了开箱即用的功能,又保持了足够的扩展性。

 

http://www.dtcms.com/a/312176.html

相关文章:

  • 3 数字字符串格式化
  • 安灯系统(Andon System)
  • h3c路由器查看温度是否正常
  • 记录一次Spring Cloud Gateway配置的跨域处理:解决 ‘Access-Control-Allow-Origin‘ 头包含多个值的问题
  • 【Shell自动化脚本——for循环创建账户,测试主机连通性,for循环密码的修改】
  • 【Java面试题】一分钟了解反射机制
  • 切换python多版本
  • 中州养老项目:Mybatis自动填充拦截器
  • 机器学习项目从零到一:加州房价预测模型(PART 2)
  • 李宏毅深度学习教程 第6-7章 自注意力机制 + Transformer
  • NVIDIA GPU架构
  • 浅拷贝与深拷贝的区别
  • 断路器瞬时跳闸曲线数据获取方式
  • 关于Sort的补充
  • SpringBoot 02 AOP
  • 王者荣耀模拟器:一款基于Python的文本角色扮演游戏
  • 译| Netflix内容推荐模型的一些改进方向
  • 测试时扩散的深度研究助手
  • Redis实战(6)-- 慢查询运用与理解
  • 图像加密学习日志————论文学习DAY4
  • 档案馆可视化:历史宝库的数字新貌
  • 使用 MySQL Shell 进行 MySQL 单机到 InnoDB Cluster 的数据迁移实践
  • 【Django】-5- ORM的其他用法
  • RAWINPUT避坑指南(涉及GetRawInputData/GetRawInputBuffer)
  • 详解Python标准库之命令行界面库
  • .env 文件
  • WinMerge:文件对比工具,支持各种格式文件对比,永久免费使用!
  • 软件交付终极闸口:验收测试全解析
  • GCC(GNU Compiler Collection)与人工智能实例
  • 基于深度学习的医学图像分析:使用MobileNet实现医学图像分类