Java JWT 实现完整教程
前置知识
在开始本教程之前,建议您具备以下基础知识:
- Java 基础语法
- Maven 或 Gradle 构建工具
- HTTP 协议基础
- 基本的加密概念
什么是 JWT?
JWT (JSON Web Token) 是一种开放标准 (RFC 7519),用于在各方之间安全地传输信息作为 JSON 对象。JWT 通常用于:
前置知识
在开始本教程之前,建议您具备以下基础知识:
JWT (JSON Web Token) 是一种开放标准 (RFC 7519),用于在各方之间安全地传输信息作为 JSON 对象。JWT 通常用于:
前置知识
在开始本教程之前,建议您具备以下基础知识:
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
前置知识
在开始本教程之前,建议您具备以下基础知识:
Log4j 是 Apache 软件基金会的一个开源项目,是一个基于 Java 的日志记录工具。它提供了:
前置知识
在开始本教程之前,建议您具备以下基础知识:
Feign 是 Spring Cloud 提供的一个声明式 HTTP 客户端,它使编写 HTTP 客户端变得更加简单。使用 Feign,只需要创建一个接口并添加注解,即可完成对服务提供方的接口绑定。相比传统的 RestTemplate,Feign 提供了更优雅的面向接口的方式来实现服务间的调用。
前置知识
在开始本教程之前,建议您具备以下基础知识:
Seata(Simple Extensible Autonomous Transaction Architecture)是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。
前置知识
在开始本教程之前,建议您具备以下基础知识:
Sharding-JDBC 是一个开源的分布式数据库中间件解决方案。它在 Java 的 JDBC 层提供的额外服务,可以透明化数据库分库分表访问。主要功能包括:
前置知识
在学习本教程前,请确保您已经:
首先配置一个主库和两个从库:
spring:
shardingsphere:
datasource:
names: master,slave0,slave1
master:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3306/demo_master
username: root
password: root
slave0:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3307/demo_slave0
username: root
password: root
slave1:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://localhost:3308/demo_slave1
username: root
password: root
rules:
readwrite-splitting:
data-sources:
readwrite_ds:
type: Static
props:
write-data-source-name: master
read-data-source-names: slave0,slave1
load-balancer-name: round_robin
load-balancers:
round_robin:
type: ROUND_ROBIN
props:
sql-show: true
前置知识
在开始本教程之前,建议您具备以下基础知识:
XXL-Job 是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
前置知识
在学习本教程前,请确保您已经:
最常用的任务类型,通过 @XxlJob
注解开发,支持自动发现注册。
@Component
public class BeanModeJob {
@XxlJob("beanModeJobHandler")
public void execute() throws Exception {
XxlJobHelper.log("Bean模式任务执行");
// 业务逻辑
}
}
前置知识
在学习本教程前,请确保您已经:
分片广播会广播触发对应集群中所有执行器执行一次任务,同时传递分片参数。适用于处理大数据量任务。
@XxlJob("shardingJob")
public void shardingJob() {
// 获取分片参数
int shardIndex = XxlJobHelper.getShardIndex();
int shardTotal = XxlJobHelper.getShardTotal();
// 分片处理逻辑
List<Long> userIds = getUserIdsByMod(shardIndex, shardTotal);
for (Long userId : userIds) {
processUser(userId);
}
}
private List<Long> getUserIdsByMod(int shardIndex, int shardTotal) {
return jdbcTemplate.queryForList(
"SELECT id FROM user WHERE id % ? = ?",
Long.class,
shardTotal,
shardIndex
);
}