0

スプリング バックボーン webapp をブートストラップするためにresthubを使用しています。

https://github.com/resthub/resthub.github.io/blob/master/docs/spring/layout.md#environment-specific-properties

https://github.com/resthub/resthub.github.io/blob/master/docs/spring/mongo.mdによると。これらには、デフォルトのデータベース プロパティ ファイルがすでにあります。

これまでのところ問題なく動作していますが、データベース名、ポート、その他の設定が異なるherokuにプロジェクトをデプロイする必要があります。

resthub によって提供されるデフォルトの db プロパティをオーバーライドするdatabase.propertiesには、クラスパスに という名前のファイルを作成できます。しかし、そのファイルはherokuへの展開用にのみ選択したい.

デフォルトのdbプロパティを使用してintellijでローカルに動作するが、herokuのdatabase.propertiesを使用するように構成するにはどうすればよいですか。

Maven プロファイルについては既に読んだことがありますが、環境ごとに異なるファイルを使用する方法について説明しており、特定の環境用に特定のファイルを持たず、残りの jar ファイルの 1 つで提供されるデフォルトのファイルを使用することを探しています。

アップデート

spring.profiles.active で設定された複数の Spring の環境プロファイルがある場合の優先順位は何ですか?

resthub-mongodbプロファイルは常に古いものであり、本番環境 ( で識別-Dprod=true) の場合は、新しいプロファイルherokuがロードされ、それが順番にロードされます。prod\database.properties

<context:property-placeholder location="classpath*:prod/database.properties"/>

しかし、mongo 関連の Bean はresthub-mongodb& で定義されたプロパティを使用して既に定義されていると思います。そのため、読み込みherokuプロファイルを読み込んで db プロパティを変更しても機能しません。

そのような場合の解決策は何ですか?

考えられる解決策

今のところ、プロファイルの 1 つを使用するかherokuresthub-mongodbシステム プロパティに依存することになりました。

他の方法はありますか?

4

1 に答える 1

1

リソース構成を使用して、maven に環境を処理させることができます。

pom または親 pom を追加します。

<env>local</env>

...

<resources>
    <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>false</filtering>
    </resource>
    <resource>
        <directory>${basedir}/src/main/config/${env}</directory>
        <filtering>false</filtering>
    </resource>
</resources>

これにより、複数の構成ディレクトリを提供できます。環境ごとに 1 つ: local、heroku ...

この conf を使用すると、resthub のデフォルトをローカルに維持しながら、heroku 環境に特定の database.properties ファイルを提供できます (config/local でカスタムの database.properties を提供しません)。

src/
   main/
       config/
             local/
             heroku/
                   database.properties

オプションを maven コマンドの実行に追加-Denv=herokuすると、すべてのconfig/ディレクトリ コンテンツがクラスパスに追加されます。localデフォルトの環境であり、オプションが指定されていない場合に使用されます。

于 2014-11-15T23:21:02.437 に答える