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

Spring Security创建securityConfig Bean失败:自动注入依赖出错

问题分析

错误栈明确指出无法解析占位符PUBLIC_KEY,但你提供的SecurityConfig中使用的是${jwt.public}和${jwt.private},说明问题出在另一个类AdminUserConfig中(错误栈里提到的adminUserConfig Bean)——这个类的构造参数2依赖了PUBLIC_KEY配置项,但你的项目中没有定义这个配置,或者配置键名不匹配。

解决方案

1. 检查AdminUserConfig类

找到com.br.BookStoreAPI.config.AdminUserConfig类,定位到使用@Value("${PUBLIC_KEY}")的代码:

  • 如果这个类需要的是JWT公钥,将占位符改为和SecurityConfig一致的${jwt.public},保持配置键名统一;
  • 如果确实需要单独的PUBLIC_KEY配置,就在配置文件中添加对应的键值对。

2. 确保配置文件正确配置JWT密钥

在src/main/resources目录下的application.properties或application.yml中添加密钥配置:

  • 若使用application.properties:
# JWT RSA密钥
jwt.public=-----BEGIN PUBLIC KEY-----
# 你的公钥内容
-----END PUBLIC KEY-----
jwt.private=-----BEGIN PRIVATE KEY-----
# 你的私钥内容
-----END PRIVATE KEY-----
  • 若使用application.yml:
jwt:
  public: |
    -----BEGIN PUBLIC KEY-----
    # 你的公钥内容
    -----END PUBLIC KEY-----
  private: |
    -----BEGIN PRIVATE KEY-----
    # 你的私钥内容
    -----END PRIVATE KEY-----

3. 清理pom.xml冗余依赖

你的pom.xml中重复引入了spring-boot-starter-security,删除其中一个,避免依赖冲突:

<!-- 移除重复的这个依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

另外,Spring Boot的oauth2-resource-server已经集成了Nimbus JWT处理库,你额外引入的JJWT依赖(io.jsonwebtoken相关)如果没有特殊需求,可以考虑移除,减少依赖冗余。

验证步骤

  1. 保存所有修改后,执行mvn clean install重新构建项目;
  2. 启动应用,检查是否还存在占位符解析错误。

内容的提问来源于stack exchange,提问作者Matheus Castilho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:14:55