0

Java アプリケーションに引数を渡す方法はいくつかあります。その中には次のものがあります。

  1. コマンドライン引数
  2. プロパティ ファイル ( properties-style)
  3. -Dシステム プロパティ (オプションで渡される)
  4. システム環境変数

イデオロギー的に、いつあるものを他のものよりも優先する必要がありますか? たとえば、アプリケーションに渡すパラメーターが多数ある場合、*.properties ファイルよりもコマンドライン パラメーターを優先する理由はありますか?

または、たとえば、スタックの奥深くにある任意のクラスから System 変数に簡単にアクセスできます (CLI では でのみアクセスできますmain)。簡単にアクセスできるという理由だけで、CLI よりもシステム プロパティの使用を優先する必要がありますか?

4

2 に答える 2

3

これらのいくつかに答える必要がある展開に依存します。

Command line params: アプリケーションを生成する他のプロセスがあり、呼び出しプロセスからそれらのパラメーターを制御したい場合に便利です。例は、それを生成するCRONです。

ファイル: 私は ini スタイルが好きではありません...あなたは Windows で立ち往生しています。非常に単純なものが必要な場合は、Properties クラスでロードできる .properties ファイルを優先してください。または、XML を使用することもできます。ファイルは、ファイルの配置も選択できます。アプリケーションに相対的な配置は展開に適しています。一部の人々は、/etc のようなグローバルな場所に配置することも好みます。

環境変数: 配置が少し複雑になりますが、これらには適切な場所があります。環境がアプリケーションのパラメーターに影響を与える場合にのみ、これを使用します。つまり、OS、マシンなどに基づいて、アプリケーションの動作が異なるか、異なる構成が必要になります。

好みは主観的であり、アプリケーション、展開、システムなどのタイプに依存する可能性があります。

于 2012-05-21T14:28:53.487 に答える
0

さて、構成に関しては、各プログラマーが正しい方法について独自の考えを持っています... いつものように、それは多くのことに依存します。

私はこの選択を次のように処理します。環境変数 ($PATH または $SHELL に似たもの) のようなものであり、呼び出し元 (別のプログラムまたは起動スクリプト) によって設定できる/設定する必要がある場合は、次のようになります。 -Dスイッチを介してSystem.Propertiesで直接。

それ以外の場合は、プロパティファイルに直接移動します(実際、ロード方法はそれほど重要ではありません。いくつかの方法があり、それぞれに長所と短所があります。私のお気に入りはクラスパスからロードしていますが、単に問題です味)。

私は System.Properties に最小限の、本当に重要なことだけを保持しようとします。それが大きな構成である場合は、Properties または XML を使用するか、データベース テーブルを使用することをお勧めしますが、これもアプリケーションの複雑さに依存します (DB を使用する HelloWorld は単純です)。やり過ぎ^^)。

于 2012-05-21T14:46:16.473 に答える