2017-07-18 4 views
1

これは一種の奇妙な質問である対ファイルが、同様のシステムプロパティとして変数を定義するのいずれかの利点があります。もっと好ましいのは何ですか?ばね特性は、システムプロパティ

答えて

1

あなたはapplication.propertiesでプロパティを定義する場合は、あなたの配布(JARまたはWAR)は関係なく、それが実行される方法の自己完結型と独自の構成を認識しています。

プロパティをコマンドライン(java -Dxxx=yyy)で定義する場合は、配布可能なもの(Webコンテナ、スクリプトなど)を実行するものを設定する必要があります。あなたは、両方のいくつかの組み合わせで終わるかもしれない。実際には

:あなたの配布

  • アプリケーションの構成プロパティ(例えば、ログディレクトリ、DB接続の外で定義された

    • JVMの構成プロパティ(例えば最小、最大ヒープの設定)詳細など)

    コマンドラインからアプリケーションプロパティを定義する一般的なケースは、環境/ホスト固有のプロパティを処理することですが、Spring profiles環境固有のプロパティを定義するための便利なメカニズムを提供します。

    私は出発点は、春のプロパティファイル内のすべてのアプリケーション固有の構成を定義するだけ説得力のある理由は、そうすることが判明した場合、このから逸脱しなければならないことをお勧めしたいです。このための共通の根拠は、アプリケーション構成を(アプリケーションやプロパティの一部、スクリプトやenvファイルの中に)広げると、開発者/ devop /サポートチームがあなたのことを理解/拡張/管理/サポートするのが難しくなる可能性があります。応用。

  • +0

    コードは実際に他の開発者によって書かれています。私は、システムプロパティとしてプロパティを定義好まない、とのいずれかそうするには、このアプリあちこちに良い理由がありません。しかし、私はこれが悪いと主張し、それを変更する理由はありません。何か案は? – Imran

    +0

    私は「このための一般的な根拠がある...」を参照してください、答えを正当化を追加しました – glytching

    3

    システムプロパティを使用しますが、それは別のプログラムに影響を与えることができることを覚えておいてください、そして定数としてそれらを考慮することは有用であろう(変更されない)が、ばね特性があなたにだけ、Javaアプリケーションのための特別な設定を提供することができますすることができます。

    同じホスト上では、さまざまなJavaアプリケーションを実行することができます。それらのプロパティが異なる必要がある場合は、(同じ名前の)システムプロパティを使用することはできません。

    +0

    あなたの環境変数とシステムプロパティを混同しているようです。 Javaの場合、System.getProperties()は、-Dオプションを指定してjavaコマンドに渡すプロパティを-DmySystemProperty = myValueに戻します。そのため、同じアプリケーションサーバーに属している場合は別のJavaアプリケーションに影響しません。 – Donatello

    関連する問題