XMLファイルの大部分から生成される静的クラスフィールドにデータを注入したいとします。 カスタムクラス初期化用の軽量クラスローダー?
class Foo {
...
static MetaData xxx;
static MetaData yyy;
}
注入
は、メタデータのインスタンスを構築し、それはFoo.propertiesとは、XXX、YYYのプロパティを解析見つけ、非常に簡単です。IoCコンテナがこのタスクに役立つかどうかはわかりませんが、そうは思われません。
Fooは、IoCコンテナによってロードされないクラスによって使用される可能性があるためです。
私の考えは、リフレクションに基づいていくつかの特定のクラス初期化コードを追加するためにコンテキストクラスローダーを変更することです。
EDIT多くのIoCコンテナがありますが、そのうちのいくつかは初期化拡張機能をサポートしている可能性があります。
'FooはIoCコンテナによって読み込まれないクラスによって使用される可能性があるので、これは問題ではありませんが、通常IoCでは設定/注釈が必要です。 ClassLoaderを変更せずに、すべてのクラスまたはプロパティファイルを検索し、Class.forNameを呼び出してリフレクションを実行するだけでは、それを行うことはできませんか?実際には、可能であれば、Map>を作成して、すべてを避けることをお勧めします。 –
maaartinus
いいえ、Class.forName()を取り除くのが設計の目的です。マップは存在しません。解析/構築プロセスは非常に高速で、MetaDataはメモリフットプリントを減らすための弱い参照です。 –
xxx、yyyを遅延モードで初期化できないのはなぜですか? –