你以为yml文件的缩进无所谓吗?多一个空格少一个空格都可以吗?呵呵。我今天发现yml才是历史上最垃圾、最反人类的数据储存格式。
以下是我的Spring Boot项目中application.yml的内容节选,行号为45到57行。
# 海康视频接口
haikang:
# 开发环境
server: https://14.29.96.12
# 生产环境
# server: https://192.168.194.8
yangUsername: yzb73920
yangPassword: 687dcec699c7ded0a0d8b9b27f38b2aa
yangPhoneNo: 18588773920
kafka:
server: localhost:9092
topic: bymj_sync # 订阅的主题,根据业务内容来取名,比如白云门禁的数据同步可取名为bymj_sync
groupid: server_249 # 消费者组标识,名字随便起,只要不和别的消费者名字重复即可
看上去很对齐是吧?人眼观察,这些配置信息确实是对齐了的。
然而Spring Boot启动报错:
Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
in 'reader', line 1, column 1:
spring:
^
expected <block end>, but found '<block mapping start>'
in 'reader', line 51, column 3:
yangUsername: yzb73920
^
注意它指的报错行号是第1行和第51行。
我愣了一会,发现错的并不是这两行,而是第48行server: https://14.29.96.12,在server前面多了一个空格。把空格删去即解决问题。
- 首先,一个成熟的、行业普遍使用的框架,居然会因为多一个空格而无法启动。
- 其次,你无法启动也就算了,你指的报错位置还指不准。
- 第三,我多出来的这个空格,在目前最新版本的IntelliJ IDEA中没有任何提示。这是最不能忍的,你说Python缩进有IDE辅助,不用人眼去关注缩进,现在IDE根本没辅助我呀。
![ef19f3dbbfeb4ca3691a1f8ecc12e709.png](https://i-blog.csdnimg.cn/blog_migrate/0c18a076b11ea8bf8c4e59171b5f5a67.jpeg)
假如用properties或xml作为配置文件格式,是不会出现这个问题的,它们都不会计较多一个空格或者少一个空格。
只有诸如YAML和Python这种严格要求缩进的语言,才会出现这种莫名其妙的坑。
因此我今天也立下人生目标: 我一辈子不碰Python。 凡是需要Python的应用场景,我都用Node.js解决。
(Python表示:关我什么事?)