@Value设置默认值后,获取不到配置值的原因分析

 更新时间:2023年07月29日 08:43:26   作者:误入歧途的羔羊  
这篇文章主要介绍了@Value设置默认值后,获取不到配置值的原因,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@Value设置默认值后,获取不到配置值

当前使用版本:Spring Framework version is 5.2.5.RELEASE

解析@Value的代码位置

org.springframework.beans.factory.support.AbstractBeanFactory#resolveEmbeddedValue

image

假设配置了

@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;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一个简单的类加载器URLClassLoader案例

    一个简单的类加载器URLClassLoader案例

    这篇文章主要介绍了一个简单的类加载器URLClassLoader案例,这里写了一个小 demo,来加深对于反射的理解,需要的朋友可以参考下
    2023-04-04
  • 如何使用Java统计gitlab代码行数

    如何使用Java统计gitlab代码行数

    这篇文章主要介绍了如何使用Java统计gitlab代码行数,实现方式通过git脚本将所有的项目拉下来并然后通过进行代码行数的统计,需要的朋友可以参考下
    2023-10-10
  • Java幸运28系统搭建数组的使用实例详解

    Java幸运28系统搭建数组的使用实例详解

    在本篇文章里小编给大家整理了关于Java幸运28系统搭建数组的使用实例内容,有需要的朋友们可以参考学习下。
    2019-09-09
  • 解决SpringAop内部调用时不经过代理类的问题

    解决SpringAop内部调用时不经过代理类的问题

    这篇文章主要介绍了解决SpringAop内部调用时不经过代理类的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • IDEA之如何快速生成get和set方法

    IDEA之如何快速生成get和set方法

    这篇文章主要介绍了IDEA之如何快速生成get和set方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 基于SpringBoot实现大文件分块上传功能

    基于SpringBoot实现大文件分块上传功能

    这篇文章主要介绍了基于SpringBoot实现大文件分块上传功能,实现原理其实很简单,核心就是客户端把大文件按照一定规则进行拆分,比如20MB为一个小块,分解成一个一个的文件块,然后把这些文件块单独上传到服务端,需要的朋友可以参考下
    2024-09-09
  • Spring Boot Async异步执行任务过程详解

    Spring Boot Async异步执行任务过程详解

    这篇文章主要介绍了Spring Boot Async异步执行任务过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • spring mail借助qq邮箱服务器发送邮件

    spring mail借助qq邮箱服务器发送邮件

    这篇文章主要介绍了spring mail借助qq邮箱服务器发送邮件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Java继承关系中构造器的使用详解

    Java继承关系中构造器的使用详解

    本文介绍了继承关系中构造器的使用要点,创建子类对象时,必须先调用父类构造器实现初始化,若父类无参构造器被覆盖,子类需用super显式调用父类构造器,且super须写在构造器首行,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • Springboot项目如何使用apollo配置中心

    Springboot项目如何使用apollo配置中心

    这篇文章主要介绍了Springboot项目如何使用apollo配置中心,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论