yaml文件读取以0开头数字型值的坑

事件的起因是要对接一个rabbitmq,rabbitmq的账号是000008。结果程序在启动时候一直报错,报错信息如下:

Caused by: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.

从报错信息上可以看出是授权失败,肯定是账号密码的问题。
但是确认了账号密码及配置文件中的配置。

spring:
  rabbitmq:
    host: myip
    port: 5672
    username: 000008
    password: mypwd

后面也是发现,同一rabbitmq环境下的test用户,是可以连接的。
两个用户的权限也是一样的,使用的程序也是一样的。

发现上述奇怪的现象后,陷入了沉思,后面启动时候直接debug代码,才发现问题之所在。
原来用户000008在程序读取后竟然不是000008。

后面经过查阅资料,了解yml文件读取的一个原理,对于以数字0开头的数字型值,在读取时候会按照8进制读取,所以实际读取到的并不是000008。

综合以上,把配置文件中用户名修改为字符串即可。

spring:
  rabbitmq:
    host: myip
    port: 5672
    username: '000008'
    password: mypwd

所以综合以上,在yml文件中配置相应的数字型值时,为了防止意外,最好加上单引号。

你可能感兴趣的:(yaml文件读取以0开头数字型值的坑)