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
用于解析和验证 JWTJwtBuilder
用于构建新的 JWT
3. 设计模式分析
3.1 工厂模式
Jwts
类是一个典型的静态工厂类,提供了创建各种 JWT 组件的统一入口。
优点:
隐藏具体实现类(
DefaultHeader
,DefaultClaims
等)简化客户端代码
便于未来实现类的替换
3.2 不可变对象
从方法签名可以看出,大多数方法返回的都是接口类型(Header
, Claims
等),而不是具体实现类。这种设计:
遵循面向接口编程原则
隐藏实现细节
便于扩展和维护
4. 典型使用示例
4.1 创建 JWT
4.2 解析 JWT
5.扩展性考虑
如果需要扩展功能,可以:
实现自己的
Header
或Claims
实现通过
header(Map)
或claims(Map)
方法传入自定义实现创建自定义的
JwtParser
或JwtBuilder
实现
这种设计使得 JJWT 库既提供了开箱即用的功能,又保持了足够的扩展性。