@Value设置默认值后,获取不到配置值的原因分析
@Value设置默认值后,获取不到配置值
当前使用版本:Spring Framework version is 5.2.5.RELEASE
解析@Value的代码位置
org.springframework.beans.factory.support.AbstractBeanFactory#resolveEmbeddedValue

假设配置了
@value("${server.servlet.context-path:/}")1、当存在多个值解析器时,如果第一个解析器获取不到配置项(server.servlet.context-path)的值,那么resolveStringValue方法将返回默认值(本例中既是 /)
2、上一个值解析器的返回值,作为下一个值解析器resolveStringValue的参数传递进去。因此,即使第二个值解析器有配置了值,那么也不可能进行正确的解析了,这导致了结果始终返回默认值
@Value注解获取配置信息时提示 Could not resolve placeholder ‘xxx‘ in value “${xxx}“
问题的原因很简单,就是获取不到配置信息
解决方法
先检查一下配置文件是否存在,注意不同环境使用不同配置文件的情况。
再检查配置文件中是否有这个配置属性,如果没有,可以在配置文件中加上该配置属性,也可以在@Value引入到属性名后加上冒号,表示在获取不到配置信息赋予默认值,比如下面获取不到my.name配置信息时 myName 的值为空字符串
@Value("${my.name:}")
String myName;总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
详解Lombok安装及Spring Boot集成Lombok
这篇文章主要介绍了详解Lombok安装及Spring Boot集成Lombok,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-03-03
SpringBoot整合sharding-jdbc实现分库分表与读写分离的示例
本文主要介绍了SpringBoot整合sharding-jdbc实现分库分表与读写分离的示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-11-11
SpringBoot @Configuration与@Bean注解使用介绍
这篇文章主要介绍了SpringBoot中的@Configuration与@Bean注解,在进行项目编写前,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制,只有把这些都搞清楚了,我们在之后使用才会更加得心应手2022-10-10
Java将文件夹保留目录打包为 ZIP 压缩包并下载的教程详解
这篇文章主要介绍了Java将文件夹保留目录打包为 ZIP 压缩包并下载的教程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-08-08


最新评论