记录:Could not resolve placeholder 'user.userName' in value "${xxx.xx}"...【亲测有效】

简介: 记录:Could not resolve placeholder 'user.userName' in value "${xxx.xx}"...【亲测有效】

一、前言🔥


👨‍🎓作者:bug菌

✏️博客:CSDN掘金

💌公众号:猿圈奇妙屋

🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。

🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。

      哈喽,小伙伴们,我是bug菌呀👀,不知不觉就一年又4月,正是踏青郊游的好时节。可上海疫情,除了在家远程办公就是看点技术顺便卷点文章。这不是4月又出了更文活动,逼自己一把,坚持每天做点内容输出,养成写作习惯,将来你会回来感谢曾经的自己坚持了一把才有此刻的辉煌成就。

      小伙伴们在批阅文章的过程中如果觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章点亮👍吧,您的点赞三连(收藏⭐️+关注👨‍🎓+留言📃)就是对bug菌我创作道路上最好的鼓励与支持😘。时光不弃🏃🏻‍♀️,掘金不停💕,加油☘️


二、版本说明🔥


环境:springboot2.3.2.REALSE + jdk1.8 + mysql5.6


三、报错排查🔥


      这是一则典型报错。不知道有的小伙伴有没有一眼看出来,问题出在哪里?其实你看报错信息,特别是我如下圈起来的,已经非常明显了。

      Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'user': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'user.userName' in value "${user.userName}"


四、报错分析🔥


      发生这种事其实很常见,因为项目不是一个人开发全程开发,多人线上协同,很多时候代码冲突会很常有,于是及其修改同一个配置文件,这回我刚更新远程代码,结果启动就直接报错。


如下是完整报错截图:


网络异常,图片无法展示
|


      事故缘由很简单,那就是因为application.yaml的active没有更变,还是指定的dev配置,但是dev没有及时同步test环境的配置,所以才造成获取${user.userName} bean找不到而启动报错啦。


      一般遇到这种报错,第一排查你所获取的参数是否存在于你所active指定的配置文件里,第二就是排查你获取的参数名是否与你所active指定的配置文件所定义的参数名一致。你只要排查这两步,八九不离十,就是上述这两问题造成的。


网络异常,图片无法展示
|


     我是当前指定的是application-test.yaml配置,所以就只需要检查这个文件即可,你们依据你们的项目设定情况而定。


五、解决方案🔥


      想要解决这一问题,其实是非常简单的。如下我可以提供两种有效解决方式,仅供参考。方式二虽是解决该启动不报错,但并不是非常优雅的。


1️⃣方式一


      配置文件中,加上对应报错的那几个全局变量。比如我如下报错就是指没有默认值。配置文件这一块由于切换active 没有同步,test环境上没有这一块变量。于是才报错。


网络异常,图片无法展示
|


在我指定的配置文件application-test.yaml 中添加该参数。


user:
  userName: 张三
  sex: 男
  age: 18


如上即可解决该报错问题。启动正常!


2️⃣方式二


      在一般配置的时候,都会给定参数默认值。虽然也能有效避免你配置文件不存在变量时报错的事故发生。


@Value("${user.userName:张三}")
    private String userName;
    @Value("${user.sex:男}")
    private String sex;
    @Value("${user.age:18}")
    private Integer age;


实际设置截图:仅供参考


网络异常,图片无法展示
|


      总结:其实是两种方案结合起来才是最真的写法。以防万一配置忘了加或者active切换没有及时同步而导致报错比采用读取默认配置的方式代价要大,所以一般在配置全局变量时,都是会给定变量默认值,但一定要给定有意义的变量默认值,好在第一时间能提醒被排查到是默认变量在启用效果。

... ...


      ok,以上这样就好啦,如果还想学习更多,你可以看看我的往期热文推荐哦,每天积累一个奇淫小知识,日积月累下去,你一定能成为令人敬仰的大佬的。好啦,咱们下期见~


六、往期推荐🔥



七、文末🔥


      如果还想要学习更多,小伙伴们可关注bug菌专门为大家创建的专栏《SpringBoot零基础入门》,从无到有,从零到一!希望能帮到大家。

      我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!


目录
相关文章
|
监控 Java API
掌握 Spring Boot AOP:使用教程
Spring Boot 中的面向切面编程(AOP)为软件开发提供了一种创新方法,允许开发者将横切关注点与业务逻辑相分离。这不仅提高了代码的复用性和可维护性,而且还降低了程序内部组件之间的耦合度。下面,我们深入探讨如何在 Spring Boot 应用程序中实践 AOP,以及它为项目带来的种种益处。
|
SpringCloudAlibaba 网络协议 Cloud Native
Spring Cloud Alibaba-全面详解(学习总结---从入门到深化)
Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。
16809 3
Spring Cloud Alibaba-全面详解(学习总结---从入门到深化)
|
SQL 存储 关系型数据库
SQL优化之Explain详解(mysql)
`Explain`是MySQL中用于分析SQL查询执行计划的工具。它可以帮助我们了解MySQL如何执行SQL语句,包括如何使用索引、预计的行数以及查询的顺序。以下是`Explain`输出的关键列及其含义的简要摘要: 1. **id**:查询的序列号,表示查询中的子句层次,id越大优先级越高。 2. **select_type**:表示查询的类型,如SIMPLE(简单查询)、PRIMARY(主查询,多表查询中的第一个查询)、SUBQUERY(子查询)、DERIVED(派生表)或UNION(UNION操作的查询部分)。 3. **table**:查询涉及的表名,如果是子查询,可能显示为衍生表
744 0
|
存储 安全 对象存储
OSS对接-STS认证模式接入参考文档
背景之前项目中用到文件上传的场景中,都是由服务端做转发到OSS,存在着性能损耗。我们在 高德文件直传能力建设 项目中需要探索使用客户端直连OSS的方式来做,了解到OSS提供了STS认证的方式,通过子账号生成的临时AK作为客户端短期访问OSS的凭证,也不同担心AK安全的问题。具体方案见官方文档:STS临时授权访问OSSOSS可以通过阿里云STS(Security Token Service)进行临时
3099 0
OSS对接-STS认证模式接入参考文档
|
6月前
|
存储 缓存 负载均衡
Nacos注册中心
本文介绍Nacos的安装部署、服务注册与发现、分级模型、负载均衡策略、权重控制、环境隔离及实例类型等内容,涵盖从入门到实战的核心知识点,帮助开发者快速掌握Nacos在微服务架构中的应用。
207 0
 Nacos注册中心
|
Kubernetes 前端开发 物联网
狂揽1.7k星!平替金蝶WMS,这款开源仓库管理系统,让仓储管理效率飙升的同时还减低成本!
ModernWMS是一款完全开源的现代化仓库管理系统,源自商业ERP系统核心模块,专为中小企业打造。采用Vue3+TS+.NET7技术栈,支持跨平台部署,实现仓储管理简易化。项目具备三大突破:成本降低90%、效率提升300%、开箱即用;并提供智能库存追踪、全流程自动化及多设备协同功能。通过Docker一键部署或传统方式均可快速启动,助力企业高效管理。项目地址:[Gitee](https://gitee.com/modernwms/ModernWMS)。
2701 11
|
9月前
|
IDE Linux 开发工具
IntelliJ IDEA最新版安装下载教程及安装教程(附安装包)
本文介绍IDEA的下载与安装教程,包含获取下载地址、安装步骤及激活方法。需注意安装路径为英文目录,运行激活脚本时需管理员权限。按指引操作即可完成激活并使用。
20241 0
|
消息中间件 Java 网络架构
如何在IDEA中创建Module、以及怎样在IDEA中删除Module?
这篇文章介绍了在IntelliJ IDEA中使用Module的原因、创建Module的步骤以及如何从硬盘上删除Module。
如何在IDEA中创建Module、以及怎样在IDEA中删除Module?
|
微服务
什么是微服务?微服务的优缺点是什么?
微服务就是一个独立的职责单一的服务应用程序,一个模块 1.优点:松耦合,聚焦单一业务功能,无关开发语言,团队规模降低 , 扩展性好, 天然支持分库2.缺点:随着服务数量增加,管理复杂,部署复杂,服务器需要增多,服务通信和调用压力增大