Spring构建报错:jwtAccessTokenConverter工厂方法抛出非法参数异常
错误原因与排查方案
从错误栈的根异常java.lang.IllegalArgumentException: [Assertion failed] - this String argument must have text; it must not be null, empty, or blank可以明确核心问题:创建JwtAccessTokenConverter Bean时,传入了空字符串参数(大概率是JWT签名密钥)。
你是替换数据库(MariaDB→MySQL)后触发报错,但这个问题和数据库类型无关,大概率是以下场景导致:
- 替换数据库配置时,误删/注释掉了
application.yml/application.properties中JWT签名密钥的配置项 - JWT相关配置项拼写错误,导致Spring无法读取到有效值,注入时为空白
- 自定义
jwtAccessTokenConverter工厂方法中,硬编码的签名密钥被误修改为空
具体排查步骤
- 检查配置文件(
application.yml/application.properties),确认JWT签名密钥配置存在且有有效值,示例:
或YAML格式:# application.properties security.oauth2.jwt.signing-key=your-valid-signing-key# application.yml security: oauth2: jwt: signing-key: your-valid-signing-key - 查看
AuthorizationServer.class中的jwtAccessTokenConverter方法,确认设置签名密钥的代码没有传入空值,示例:@Bean public JwtAccessTokenConverter jwtAccessTokenConverter() { JwtAccessTokenConverter converter = new JwtAccessTokenConverter(); // 此处密钥不能为null、空串或全空白串 converter.setSigningKey("your-valid-signing-key"); // 若从配置注入,需确保配置项能正确读取 // converter.setSigningKey(jwtSigningKey); return converter; } - 确认数据库切换时没有误切换到缺少JWT配置的环境(比如多环境配置下的
application-dev.yml/application-prod.yml)
内容的提问来源于stack exchange,提问作者choijjjj
相关产品推荐
相关产品推荐

