直接上编译时发生的错误

Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.redis.cache.on' in value "${spring.redis.cache.on}"

yml文件部分配置:

spring:#--------------------------------------------------#  DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)#--------------------------------------------------   cache:type: redisredis:host: localhostport: 6379password: nullpool:# 最大连接数max-active: 100# 最大空闲数,空闲链接数大于maxIdle时,将进行回收max-idle: 8# 最小空闲数,低于minIdle时,将创建新的链接min-idle: 0# 最大等待数max-wait: 100000timeout: 0database: 0# 自定义的要获取的配置cache:on: true

@Value获取配置文件配置部分代码

@Aspect
@Component
public class RedisCacheAspect {@Autowiredprivate RedisTemplate redisTemplate;/*** 是否开启redis缓存,将查询的结果写入value*/@Value(value = "${spring.redis.cache.on}")private Boolean isOn =true;//此处省略其它代码
}

按照官方给出的方式进行@Value方式获取,应该是没有问题的,那么问题出在哪里呢?

测试一:我们将上面的配置文件.yml换成.properties,@Value获取配置的方式不变,如下:

 #--------------------------------------------------#  DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)#--------------------------------------------------
spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=null
spring.redis.pool.max-active=100
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-wait=100000
spring.redis.database=0
# 自定义的要获取的配置
spring.redis.cache.on=true 

经过测试,发现程序可以正常编译通过,并通过Debug测试发现值可以正常获取。

测试二:我们将上面的配置文件.yml中所配置的on属性修改为ison,@Value获取配置的方式相应修改为@Value(value = "${spring.redis.cache.ison}")。如下:

 #--------------------------------------------------#  DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)#--------------------------------------------------
spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=null
spring.redis.pool.max-active=100
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-wait=100000
spring.redis.database=0
# 自定义的要获取的配置
spring.redis.cache.ison=true 

经测试后,发现程序可以正常编译通过,并通过Debug测试发现值可以正常获取。

结论:在我们使用yml进行自定义配置项时,要注意配置项的名称,我们推测可能使用on作为配置项名称涉及到了yml配置文件的关键字,导致无法正常解析配置项,如有知道原因的欢迎下方留言,一起讨论。

另外,使用.properties文件和.yml文件作为配置文件使用@Value获取配置项时,还存在一点区别:

在IDEA中测试发现,当使用.properties文件时,按下Ctrl鼠标放在${spring.redis.cache.ison}上是可以定位到配置文件的位置的。但是使用.yml文件,做相同操作时无法定位到相应的配置文件位置。不过二者都是可以正常使用的,只是IDEA支持上面的区别而已。

使用@Value读取yml配置文件编译报错相关推荐

  1. 【错误记录】Android Studio 编译报错 ( SDK location not found )

    文章目录 一.报错信息 二.解决方案 一.报错信息 Android Studio 编译报错 : 首次打开别人的项目 , 经常性的报错 ; Could not determine the depende ...

  2. linux make编译报错 mv,Linux下安装redis

    1:首先下载redis  http://redis.io/download 2:  需要Linux安装gcc依赖 3:进行解压 tar -zxvf redis-3.0.0-rc2.tar.gz 4:进 ...

  3. 使用uniapp做微信小程序,在小程序编辑器运行时编译报错:appid不合法,导致启用不了。

    使用uniapp做微信小程序,在小程序编辑器运行时编译报错:appid不合法,导致启用不了.这个好坑爹啊,我这么淑女的小可爱都想骂人了,我好累,写个博客发泄发泄吧! 复现我的问题:神操作--代码跟别人 ...

  4. [IAR] 编译报错:Variable expansion failed for Pre-Build command line

    这里写目录标题 项目场景: 问题描述: 原因分析: 解决方案: 项目场景: 导入工程,编译报错. Variable expansion failed for Pre-Build command lin ...

  5. 使用ButterKnife时的编译报错解决

    错误一:gradle编译报错,版本不合适: 在Android studio中使用butterKnife时,出现了编译报错,根据错误提示,是缺少了gradle-3.3-all的安装包,我们从网上下载下来 ...

  6. 【问题解决】更新PS4手柄库PS4-esp32编译报错GAP_ConnOpen问题解决方法

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 210925程序编译报错及解决方法 今天又又搞小车,准备用ps4手柄控制,经常的日常的 ...

  7. go build 编译报错 missing go.sum entry for module providing package

    go build 编译报错 missing go.sum entry for module providing package 解决方法 // 移除未使用的依赖 go mod tidy 再次编译,就可 ...

  8. 编译报错field has incomplete type

    linux下编译C++代码报错,报错信息"field has incomplete type".这种问题一般都是在头文件对类或者结构体进行了前向声明,后面使用了该类定义了对象,导致 ...

  9. Eclipse中更改JDK版本,解决ant编译报错的问题

    要改一个JDK版本 主要是为了解决ant编译报错,JDK版本不一致的问题. 1. Windows--Preferences--Java--Compiler(配置的为1.8)--Installed JR ...

最新文章

  1. .Net Core 项目引用本地类库方式(二)
  2. 关于MySQL 5.6 中文乱码的问题(尤其是windows的gbk编码)
  3. 用python计算pi的值_如何使用python中的series计算pi的值?
  4. 蓝桥杯-字串统计(java)
  5. INFO:InstallShield工程中如何将安装包集成的Prerequisites安装文件压缩到一个Setup.exe中...
  6. Android控制EditText的焦点
  7. 嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究
  8. 自动化测试 (四) 自动卸载软件
  9. pass样本量_基于PASS两样本均数比较的样本量计算
  10. 信息系统项目管理师(高项)考试的论文怎么写,怎么背?经验分享
  11. Prometheus - 普罗米修斯 - 日志监控mtail尝试
  12. 有关电影《邪不压正》和姜文系列
  13. 【GRNN情绪识别】基于GRNN神经网络的情绪识别算法matlab仿真
  14. RPA之家视频讲解RPA-3
  15. 关于linux python3.7版本 No module named ‘_ssl‘报错
  16. 获取选中状态复选框的值并添加id
  17. 【ESP8266】ESP8266的MQTT客户端搭建教程(基于NONS_SDK_v2.0)
  18. Rhel5.8下载安最新版本的Python3
  19. 音标课件软件测试,宝宝益智英语字母音标(测试版)
  20. Oracle中游标Cursor介绍

热门文章

  1. MySQL-FlinkCDC-Hudi实时入湖
  2. 小米和MAC触摸板手势汇总
  3. js获取当前时间的年月日时分秒
  4. Unity3D UI层 两个摄像头会出现两层UI的情况
  5. C语言文件操作,增删改查
  6. Python - 用 turtle 绘制圆形
  7. html文字左右边距怎么设置,html内容左右边距怎么设置
  8. 24节气-芒种 || 一分耕耘,一分收获。
  9. 自定义时间选择器-前端组件
  10. linux更新项目常用命令汇总