DIコンテナのメリットというか垂れ流し?

DIコンテナのメリットによくあげられること。


疎結合になる
・newが消える


newが無い≒疎結合、ってことだと思う。


で、疎結合について


FooServiceがあって、FooServiceImpl。いわゆるインターフェースと実装の分離。
インターフェースに依存してんじゃん。とか思う。
何がうれしいのか?テストにモックを使いやすいから?


public class FooAction {
private FooService fooService = new FooServiceImpl();

public void setFooService(FooService fooService) {
this.fooService = fooService;
}
}


public void setUp() {
fooAction.setFooService(new MockFooService());
}


できました。
実装が複数あって、ArrayFooServiceImplとLinkedFooServiceImplとか普通ないよね。
setがあればいいんじゃね?みたいな?


ルールみたいなのを後から追加できるってのはあるような気がする。
設定ファイルだったら。



...
...
...

これは、メソッドインジェクションの優位なとこ。
つか、こういうのって、ライブラリの世界だよねー


あと、DIとPOJOであることは別の話。
POJOは、DIコンテナってよりは、フレムーワーク側の話。終わり。


話が変わって、AOPが使いやすい。
Load-time weavingとか言うと終わるんだけど、
VM引数使うのが敷居が高いって考えると敷居が低い。
Java1.4でも使えるし。
使いやすいってよりは、DIとAOPは相性がいい。メリット。


さらに話が飛んで、最近のDIコンテナだと、スコープ管理してくれる。
シングルトンとか、リクエストとか、なんとかとか。
これもメリット。
使う側のクラスは、セットされたオブジェクトのスコープを気にしなくていい。
つか、実装する人は気にする。
あ、これがPOJOか。


全然関係ないけど、アノテーションが付いたPOJOってoldなの?
plainだと思うけど、old?
POJOって呼ぶの?


newだと、PNJO。
ポニョ。
これが言いたかっただけw