Spring Reference Manualから引用:
ApplicationContext 実装のデフォルトの動作は、起動時にすべてのシングルトン Bean を熱心に事前インスタンス化することです。事前インスタンス化とは、ApplicationContext が初期化プロセスの一部としてすべてのシングルトン Bean を積極的に作成および構成することを意味します。一般に、これは良いことです。構成または周囲の環境のエラーがすぐに発見されることを意味するからです (数時間または数日後に発生する可能性があるのとは対照的に)。
ただし、この動作が望ましくない場合もあります。ApplicationContext を使用するときにシングルトン Bean を事前にインスタンス化したくない場合は、Bean 定義を遅延初期化としてマークすることで、これを選択的に制御できます。遅延初期化された Bean は、起動時または最初に要求されたときに Bean インスタンスを作成する必要があるかどうかを IoC コンテナーに示します。
XML 経由で Bean を構成する場合、この遅延読み込みは [bean element] の「lazy-init」属性によって制御されます。例えば:
<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/>
ただし、Bean がファイル ロックやデータベース接続などのリソースを使い果たしている場合を除き、複数の (ただし異なる) プロファイルに対してこの 1 つの構成を使用する方が簡単であれば、単純なメモリ オーバーヘッドについてはあまり心配しません。