原文地址:https://blog.csdn.net/hb9176070/article/details/82749771spring
最近在寫spring cloud 項目時須要配置開關,按照以往寫項目的習慣,就在配置文件命名了key 以後寫了 on.
項目啓動以後,神奇的事情出現了,項目讀取到的值竟然變成了 true!這讓我大吃一驚,問了下身邊的資深同事,同事說:這怎麼可能,你不扯淡呢,你又搞了什麼鬼,on怎麼可能變成true??! 沒辦法,只能本身摸索.
首先覈對了配置項和讀取的代碼,發現沒問題,再對spingCloud的相關源碼不斷的debug進去看看哪裏出了問題,可是找了半天,也沒發現有問題.
最後沒轍了,在on上加上單引號,變成’on’,代碼讀取出來的終於讀到了正確的"on"!
問題是解決了,可是對於出現這樣的緣由仍是不明白,本人作了大膽的猜想:spingCloud底層在讀取配置文件時若是讀取到了非字符串 on 則會轉換成true,那麼相應的,若是配置了非字符串 off,應該會讀取成false , on 和off 對於spingCloud是兩個特殊的單詞,會轉義.
本着這個猜想,作了以下測試:測試
配置項:.net
2.測試代碼以及debug結果debug
由上面的配置項代碼能夠看出: on 和 off 確實被讀取成了 true和false, 帶引號的’on’和’off’纔會讀取成 on 和off ,而普通的字符不帶上單引號仍然讀出是相應的字符串.
總結: on和off帶有開關的常識,spingCloud底層將這兩個單詞進行了轉義,在咱們實在須要使用這兩個單詞做爲配置項可是又不想讀取成true或者false的時候,最好帶上單引號.
blog