iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
Kotlin

Kotlin魔法:Spring Boot 3的fp奇幻冒險系列 第 20

[小草原] Spring Boot的application.properties 讀取大解密

  • 分享至 

  • xImage
  •  

前情提要

前面幾天講了幾種測試的方式,今天我們要來讀取環境變數,這樣我們才能正常的設定MongoDB的連線,不要直接寫死在code裡面。

好處?

The Twelve-Factor app有提到,我們要將config與程式碼嚴格分離
,為甚麼呢? 因為我們在部屬的時候會需要用不同的設置!

比如說,我們在測試環境中,可能用本地端的DB,那麼我們可能會寫
mongodb://localhost:27017,但我們Production環境不可能用本地端的DB吧! 因此會有另一組connection string,當我們將config寫死在code中時,每到一個環境,就要改一次code,實在是很麻煩,尤其跑CI/CD很久的時候,會抓!狂!
如果我們將Config讀立出來,將將將,我們可以不改code就可以變更連線的DB,太讚了。

spring boot 怎麼讀application.properties?

application.properties是一個常見的Java應用程式設定文件,用來指定應用程式的設定資訊。在Spring框架中,應用程式配置可以使用這個檔案進行管理。

它有兩種設定方式第一種是key value的形式,
另一種則是yml檔(縮排要很注意!)

key value

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret

這種方式很簡單,有一個key,對應著它的value。

yml

使用yaml格式的application.properties時,檔名要改application.yml,並且我們要依照yml格式來撰寫

spring:
  messages:
    basename: messages

如何讀取?

@Component
class MongoENV {
    @Value("\${mongodb.url}")
    lateinit var connctionString: String
}

這邊會將connctionString標註為lateinit,代表之後才會初始化,而@Value則是要將我們想讀取的變數Key寫在這邊,這樣我們就可以讀到mongodb.url的內容。

總結

透過讀取application.properties,我們就可以實現config與code分離了!當然最好還是寫在env裡面XD

參考資料

https://12factor.net/config


上一篇
[城鎮] TestContainer 衝衝衝
下一篇
[城鎮] Spring Boot 與 TestContainer 的互動
系列文
Kotlin魔法:Spring Boot 3的fp奇幻冒險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言