DI(Dependency Injection)の標準化とDIコンテナ不要論

最近、標準をめぐってなにかとDI(Dependency Injection)が話題ですが、
JavaではDIがかなり標準的な実装パターンとして認知されてきました。


ここで、パッケージとして標準化されるのであれば、もうDIコンテナを利用しないパターンも想定してもよいと思う。


DIコンテナを利用しないパターンというのは言語レベルでDIをサポートする。つまりコンパイル時に設定ファイルとソースをもってして依存性解決の処理をバイトコードレベルで完了する。このときに最適化も加えるとフレームワークのDIコンテナを利用した依存性解決よりもパフォーマンスが向上したり加えて省メモリだと思う。※そういう意味ではコンパイル時の依存性解決を実現するにはGuiceみたいな設定がソースの構成がいいと思う。


上記の例だと対応できないのが、稼働中のバージョンアップ等、動的に実行クラスを変更することが難しいため、その場合はDIコンテナを利用する必要がある。但し、動的に依存性解決を変更できるDIコンテナが厳密にあるかどうかは調べていないのだが。※JVMに動的な機能を付加する案もないこともないと思うが・・・


一部の例外もあるが、言語レベルでの依存性解決サポートで大多数のアプリケーションはパフォーマンス、省メモリといったメリットが享受できるため、今後の採用に期待したいと思う。※もちろん、コンパイルオプションでよいと思う。なお、コンパイル時の依存性解決というのは広義の意味ではAOPに近いものかもしれない。