・プログラム内のレキシカルなコンテキストに応じて異なる依存性を注入したい。
 アプリケーション毎にクラスAに異なる依存性を注入出来るのは当然として、同じアプリ内でも
 例えばクラスAのインスタンスがクラスBのプロパティであるときとクラスCのプロパティである
 ときにはクラスAのインスタンスにそれぞれ異なる依存性を注入したい
・実行時のコンテキストやライフタイムに応じて異なる依存性を注入したい。
 データベースハンドラのように実行中ずっと共有される依存性、セッション毎に共有される依存性
 リクエスト毎に共有される依存性、使い捨ての依存性などの違いを手間をかけずに扱いたい。
・そういった注入のされ方の詳細を注入される側には書きたくない。例えばインスタンス毎に
 生成される依存性はnewで、シングルトンなどの場合はファクトリを、なんてのを注入される
 側で書くのは最悪。注入される側にとっては注入される依存性がシングルトンなのか否かは全く
 あずかり知らぬこと。
・依存性の注入し忘れをプログラム開始前に検出したい
・注入も出来るところは規約ベースなどで自動化したい
・等々といったよくある作業を新たに手組をせずに実現したい