Как обеспечить учетные данные для динамической базы данных для Spark Java?

Я создаю простой REST API, используя искру java. В проекте используется Postgres DB для хранения, gradle как система сборки. Жировая банда развернута на AWS .

У меня три среды, local , staging и production . Для каждого создания мусорного ящика я хочу предоставить определенную конфигурацию, подобную приведенной ниже, используемую для локальных сборок:

  dbHost = "localhost" dbUsername = "myusername" dbPassword = "mypassword" database = "mydb" dbPort = "5432" 

Как обеспечить эти значения динамически на основе варианта сборки fatJar?

Я использовал файл .properties , выполнив этот пример gitub-проекта Kotlin-dev-proxy .

Сервер считывает переменную окружения, называемую app_environment и использует соответствующий файл ресурсов.

Образец кода:

DbConfig.kt

 data class DbConfig( val dbHost: String, val dbUsername: String, val dbPassword: String, val dbName: String, val dbPort: Int) 

ServerSettings.kt

 class ServerSettings(settings: String) { val resources = Properties() init { val fileUrl: URL = resources.javaClass.getResource("/$settings.properties") ?: throw FileNotFoundException("$settings.properties file not found") fileUrl.openStream().use { resources.load(it) } } fun printSettings() = resources.stringPropertyNames().forEach { println("Property: $it has value: '${resources[it]}'") } fun getString(key: String): String = resources[key]!! as String fun getInt(key: String): Int = (resources[key]!! as String).toInt() } 

DbConfig.kt

 fun provideDbConfig(): DbConfig { val settings = ServerSettings(System.getenv("app_environment")) settings.printSettings() return DbConfig( dbHost = settings.getString("dbHost"), dbUsername = settings.getString("dbUsername"), dbPassword = settings.getString("dbPassword"), dbName = settings.getString("dbName"), dbPort = settings.getInt("dbPort") ) } 

ресурсы / develop.properties

 # Local Db values dbHost=localhost dbUsername=postgresusername dbPassword=postgrespassword dbName=mydbname dbPort=5432 

При развертывании в Amazon EBS, перейдите к конфигурации программного обеспечения и добавьте соответствующую экологическую переменную (этап / производство) для среды.