我的 Spring Boot 項目使用 application.yml 作為配置,我不想在其中寫入數據庫憑據,因為 yml 文件是源代碼的一部分,它將被推送到公共代碼存儲庫中。因此,我需要將憑據放入屬性文件中,并將屬性文件放在應用程序主機服務器上的某個位置。那么,是否可以將 application.yml 中的表達式外部化到屬性文件中?例如帶有 application.yml 的 sprint 啟動應用程序spring: datasource: jdbc-url: ${url} username: ${user} password: ${pwd}然后我們可以將憑據放入 app.properties 中,如下所示,并將該文件放入主機服務器中。url="jdbc:xxxx"user="username"pwd="password"
2 回答

holdtom
TA貢獻1805條經驗 獲得超10個贊
您可以通過調用該文件來做到這一點application.properties。
但請記住,屬性名稱應類似于 yaml 結構:
spring.datasource.url="jdbc:xxxx"
spring.datasource.user="username"
spring.datasource.pwd="password"

茅侃侃
TA貢獻1842條經驗 獲得超21個贊
這是所有開發人員普遍關心的問題,即如何保護數據庫憑據以防止任何誤用,但相信我,將憑據保存在單獨的文件中不會給情況增加太多價值。
如果有人能夠訪問您的 application.yml,那么也可以訪問位于單獨文件夾中的屬性文件。
了解您的問題后,您需要將代碼推送到公共存儲庫中,您必須保護您的代碼。我的投入很少。
您不需要單獨的屬性文件和 application.yml 中的相應變量,您可以提供您的值,并且在應用程序啟動期間始終可以在應用程序外部覆蓋它們。
例如
spring: ??datasource: ????jdbc-url:?myFakeURL ????username:?MyFakeUserName ????password:?myFakePAssword
一旦定義了它們,您就可以覆蓋它們,例如
java?-jar?-Dspring.datasource.jdbc-url=myRealURL??-Dspring.datasource.jdbc-username=myRealUserName??-Dspring.datasource.password=myRealpassword???myApplication.jar
請記?。哼@是一種方法,還有其他方法
您可以創建 shell 腳本/批處理文件(包含這些屬性)并在啟動應用程序之前執行
使用 Spring Boot,您必須考慮做幾件事,即加密您的屬性值。Spring 為Jasypt提供了對加密屬性的良好支持,相信我,您幾乎不需要付出任何努力
您還可以探索使用 Vault 管理機密
添加回答
舉報
0/150
提交
取消