ご存じのように、spring-bootは、Datasourceの詳細が特定の変数名を使用することを期待しています。
1 /環境からの変数を使用する必要がある場合、Cloud FoundryやHorukuなどのクラウドサービスへのデプロイメントから来る場合は、スプリングブートが必要ですボックスの外に配管の割当てを処理する-starter-cloud-connector。良い読み取りがこの
2 /代わりの春ブーツ独自の自動魔法のような配線器具に頼るを通してあなたを歩く(Binding to Data Services with Spring Boot in Cloud Foundry記事とDeploying to the cloudドキュメントである、あなたはどのようにデータソースの情報を上書きするカスタムコンフィグレーションBeanを作成することができます人口のある関係のアノテーションを説明する良い読み取りがここで見つけることができます:。。Spring Java Config Documentation - @BeanConfiguration JavaDOC上記のあなたの例に基づいて、ここで私は吐き捨てるものです:
@Configuration
public class MyDataSourceConfig {
@Bean
@Primary
public DataSource getDataSource() {
String url = "jdbc:postgresql://" + System.getenv("DATABASE_HOST") + ":5432/dbname";
String username = "postgres";
String password = "postgres";
String driverClassName = "org.postgresql.Driver";
/*
* Create the datasource and return it
*
* You could create the specific DS
* implementation (ie: org.postgresql.ds.PGPoolingDataSource)
* or ask Spring's DataSourceBuilder to autoconfigure it for you,
* whichever works best in your eyes
*/
return DataSourceBuilder
.create()
.url(url)
.username(username)
.password(password)
.driverClassName(driverClassName)
.build();
}
}
ちょうど春に、あなたはいつもの充てる上書きすることができますことを覚えておいてください少し掘り下げたデフォルトの動作!
これが役に立ちます。
私は環境変数名を持っています:userとvalue:passです。私のapplication.propertiesでは、datasource.username = $ {user}を使用しました。 – Jesse
環境変数が設定されていない場合にデフォルト値を設定する方法はありますか? –
デフォルト値をapplication.ymlに入れることができます。 envプロパティがそれらを上書きします。優先度が高い –