前面幾天講了幾種測試的方式,今天我們要來讀取環境變數,這樣我們才能正常的設定MongoDB的連線,不要直接寫死在code裡面。
The Twelve-Factor app有提到,我們要將config與程式碼嚴格分離
,為甚麼呢? 因為我們在部屬的時候會需要用不同的設置!
比如說,我們在測試環境中,可能用本地端的DB,那麼我們可能會寫
mongodb://localhost:27017,但我們Production環境不可能用本地端的DB吧! 因此會有另一組connection string,當我們將config寫死在code中時,每到一個環境,就要改一次code,實在是很麻煩,尤其跑CI/CD很久的時候,會抓!狂!
如果我們將Config讀立出來,將將將,我們可以不改code就可以變更連線的DB,太讚了。
application.properties是一個常見的Java應用程式設定文件,用來指定應用程式的設定資訊。在Spring框架中,應用程式配置可以使用這個檔案進行管理。
它有兩種設定方式第一種是key value的形式,
另一種則是yml檔(縮排要很注意!)
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
這種方式很簡單,有一個key,對應著它的value。
使用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