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相关)如果没有特殊需求,可以考虑移除,减少依赖冗余。
验证步骤
- 保存所有修改后,执行
mvn clean install重新构建项目; - 启动应用,检查是否还存在占位符解析错误。
内容的提问来源于stack exchange,提问作者Matheus Castilho
相关产品推荐
相关产品推荐

