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