You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Security集成JWT报错:找不到RsaKeyProperties类型Bean

问题根源

你的RsaKeyProperties虽标注了@ConfigurationProperties注解,但未被Spring容器注册为Bean,导致SecurityConfig构造函数注入时找不到对应实例。


解决方法

方法一:通过@EnableConfigurationProperties注册Bean

修改SecurityConfig类,完善@EnableConfigurationProperties注解,明确指定要注册的配置属性类:

@Configuration
@EnableWebSecurity
@EnableConfigurationProperties(RsaKeyProperties.class) // 指定要注册的配置类
public class SecurityConfig {
    private final LoginAuthFilter loginAuthFilter;
    private final RsaKeyProperties rsaKeyProperties;

    public SecurityConfig(LoginAuthFilter loginAuthFilter, RsaKeyProperties rsaKeyProperties) {
        this.loginAuthFilter = loginAuthFilter;
        this.rsaKeyProperties = rsaKeyProperties;
    }

    // 原有Bean方法保持不变...
}

此方式无需修改RsaKeyProperties代码,@EnableConfigurationProperties会自动将指定类注册为Spring Bean并完成配置绑定。

方法二:给RsaKeyProperties添加@Component注解

直接在RsaKeyProperties上添加@Component,让Spring组件扫描时将其注册为Bean:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;

@ConfigurationProperties(prefix ="rsa")
@Component // 添加组件注解
public record RsaKeyProperties(RSAPublicKey publicKey, RSAPrivateKey privateKey) {
}

注意:确保RsaKeyProperties所在包被Spring组件扫描覆盖(比如属于主启动类所在包的子包,或通过@ComponentScan指定扫描范围)。


额外配置检查

确认配置文件中RSA密钥格式正确,示例如下:

application.yml

rsa:
  public-key: |
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxQ...
    -----END PUBLIC KEY-----
  private-key: |
    -----BEGIN PRIVATE KEY-----
    MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQ...
    -----END PRIVATE KEY-----

application.properties

rsa.public-key=-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxQ...
-----END PUBLIC KEY-----
rsa.private-key=-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxQ...
-----END PRIVATE KEY-----

配置完成后,Spring会将配置文件中的密钥绑定到RsaKeyProperties属性,同时该类作为Bean注入到SecurityConfig中。

内容的提问来源于stack exchange,提问作者Wabi-Sabi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:55:17