クラウドファウンドリではファイルシステムにアクセスできません。設定ファイルをクラスパスに保存し、クラスパスからプロパティをロードする必要があります。これはSpringブートのデフォルトの動作です。 Springブートのapplication.propertiesファイル(src/main/resourceの中にあります)がjarファイルの中に入り、springsが読み込みます。したがって、組み込みのjar/warをビルドすると、クラスパスの中に入り、直接動作します。
プロパティを処理するクラウドファウンドリの方法は、VCAP変数によるものです。 cf push中に使用されるdeplyomentマニフェストを使用して、これらのプロパティを外部化することができます。 マニフェストのymlファイル内に、以下のようにプロパティを定義します。
env:
myprop1: myvalue1
myprop2: myvalue2
この方法を使用すると、アプリのすべてのプロパティを通常のシステムプロパティとして利用できます。 Javaコード内では、アプリケーション内でSystem.getProperties()としてアクセスできます。
これらの2つのアプローチの主な欠点は、アプリケーションをクラウドファウンドリに再構築/再プッシュする必要があることです。アプリケーションが起動して実行されると、アプリケーションは動的にプロパティの変更を読み取ることができません。
このSpring-Cloudを克服するには、プロジェクトcloud-configが必要です。これは、GITまたはFile System/Vaultなどの他のいくつかのタイプのデータソースによってサポートされます。これは、異なる設定サービスとして実行されます。 Configサービスからアプリケーションの読み取りプロパティを作成するアプリケーションプロパティファイル内に、configサーバーを定義できます。
https://cloud.spring.io/spring-cloud-config/spring-cloud-config.html
ほとんどの場合、マイクロサービスアーキテクチャのプロパティを集中管理する必要がある場合は、構成サービスのアプローチに行くことができます。
1.なぜクラウドファウンドリはファイルシステムアクセスを提供しませんか? – Tiya
2. Springブートアプリケーションをクラウドに一度だけデプロイしたい。しかし、春のブートアプリケーションをクラウドに再デプロイする必要なく、後でプロパティファイルの内容を変更できるようにしたい。これはapplication.propertiesを使って実現できますか? spring-bootアプリケーションをデプロイした後でも、アプリケーションの.propertiesをリロードできますか? – Tiya
クラウドファウンドリは、仮想環境で動作します。アプリケーションの各インスタンスは、独立した独立したコンテナで実行されます。したがって、ファイルシステムは一時的なものです。このリンクを読んで、クラウドファウンドリの仕組みを理解してください。 https://docs.cloudfoundry.org/devguide/deploy-apps/prepare-to-deploy.html#filesystemアプリケーションのプロパティをリロードすることはできません。いくつかのプロパティを変更したら、再構築し、アプリケーションをクラウドファウンドリにプッシュする必要があります。あなたのユースケースには、春のクラウド設定サーバーの使用を検討する必要があります。 –