5

静的ブロックを使用して静的ハッシュテーブルを初期化するクラスがあります。これは、プロパティ ファイルを読み取り、ファイルの内容を解析してから、適切な値を Hashtable に設定することによって行われます。

ただし、ファイルの場所を指定する代わりに、Spring を使用して場所を挿入し、基本的にクラス内のハードコードされた値を排除したいと考えています。実際には静的変数に注入することは可能ですが、非静的セッターの使用が必要になることをどこかで見ました。

したがって、私の質問は、静的ブロックが実行される前にセッターの呼び出しが行われるのか、それとも Spring がセッターを呼び出す前に静的ブロックが最初に実行されるのか (基本的に私のコードで例外が発生します) ですか?

ありがとうございました!

4

1 に答える 1

4

静的初期化子は、コードがクラスへのアクセスを許可される前に、クラスのロードの一部としてクラスローダによって実行されます。Spring はそのインスタンスでセッターを呼び出す前にクラスをインスタンス化する必要があるため (これにはクラスをロードする必要があります)、静的初期化ブロックは既に実行されています。

于 2012-08-14T00:45:54.937 に答える