そもそも、既存のDIコンテナで満足ならば、自分でわざわざ
新たにDIコンテナを書き起こす必要は、もちろんありません。
私は、しばらくマネジメントを主な仕事にしていて、昨年の
後半に初めてまともに世のメジャーなDIコンテナに触る機会を無理矢理
作りました。(それまではPlexusくらいしか触ったことなかったのです)
そのとき何が嫌だったのかというと、細かいところはいろいろあるとして
耐えられなかったのは、
XMLにJavaのFQCNを書く
ことです。とにかくこれが嫌で嫌でしかたなかった。
そのとき使っていたのはS2 Containerですが、
他のDIコンテナはもちろん、多くのフレームワークについても
同じ問題があります。
なぜ、XMLにクラス名を書くのがそんなにつらいのか?
まず、単純にタイピング量が多いというのもありますが、
何より私にとって痛かったのは、XMLはJavaのクラス名を文字列としてしか
扱うことができないことです。だから、タイプミスは実行してみるまで
判明しないし、XMLエディタはクラスパスを探してクラス名を
補完することも、リファクタリングに追従させることも、
何か特別なことをしない限り実現できません。
しかも、私はクラス名を一発で決めることができない人間で、
つい何回もEclipseのリファクタリングで名前を変えてしまいます。
そしてそのたんびに、.diconを書き換えるのを
忘れます。何回やっても忘れます。
これは私の仮説ですが、
人間が一生のうちにXMLに手書きできるJavaクラス名の総量は決まっていると
思います。私は、特に才能の無い人間だったようで、あっとゆうまに
その限りある資源を使い尽くしてしまいました。
あとは、自分でかわりの何かを書くしかなくなるのです。
地球上で、Javaクラス名のことをもっとも良く理解しているツールは
Javaのコンパイラです。Javaのコンパイラが理解できるのは、Javaの
ソースコードだけです。だから、DIコンテナの設定はJavaで書くの
が自然だと思います。ただ、Javaで設定を書くと、どうしても記述が手続的に
なってしまい、冗長に見えるという問題があります。そこのところを
一工夫して、簡潔かつ宣言的に、Javaコードで設定が書ける
DIコンテナがほしい。多機能でなくてもよいから、すみずみまで理解できて、
ストレスなく使えるDIコンテナがほしい。
そんな思いから今さらながら自分でDIコンテナを作ってみよう、
と思い立ったわけです。
新たにDIコンテナを書き起こす必要は、もちろんありません。
私は、しばらくマネジメントを主な仕事にしていて、昨年の
後半に初めてまともに世のメジャーなDIコンテナに触る機会を無理矢理
作りました。(それまではPlexusくらいしか触ったことなかったのです)
そのとき何が嫌だったのかというと、細かいところはいろいろあるとして
耐えられなかったのは、
XMLにJavaのFQCNを書く
ことです。とにかくこれが嫌で嫌でしかたなかった。
そのとき使っていたのはS2 Containerですが、
他のDIコンテナはもちろん、多くのフレームワークについても
同じ問題があります。
なぜ、XMLにクラス名を書くのがそんなにつらいのか?
まず、単純にタイピング量が多いというのもありますが、
何より私にとって痛かったのは、XMLはJavaのクラス名を文字列としてしか
扱うことができないことです。だから、タイプミスは実行してみるまで
判明しないし、XMLエディタはクラスパスを探してクラス名を
補完することも、リファクタリングに追従させることも、
何か特別なことをしない限り実現できません。
しかも、私はクラス名を一発で決めることができない人間で、
つい何回もEclipseのリファクタリングで名前を変えてしまいます。
そしてそのたんびに、.diconを書き換えるのを
忘れます。何回やっても忘れます。
これは私の仮説ですが、
人間が一生のうちにXMLに手書きできるJavaクラス名の総量は決まっていると
思います。私は、特に才能の無い人間だったようで、あっとゆうまに
その限りある資源を使い尽くしてしまいました。
あとは、自分でかわりの何かを書くしかなくなるのです。
地球上で、Javaクラス名のことをもっとも良く理解しているツールは
Javaのコンパイラです。Javaのコンパイラが理解できるのは、Javaの
ソースコードだけです。だから、DIコンテナの設定はJavaで書くの
が自然だと思います。ただ、Javaで設定を書くと、どうしても記述が手続的に
なってしまい、冗長に見えるという問題があります。そこのところを
一工夫して、簡潔かつ宣言的に、Javaコードで設定が書ける
DIコンテナがほしい。多機能でなくてもよいから、すみずみまで理解できて、
ストレスなく使えるDIコンテナがほしい。
そんな思いから今さらながら自分でDIコンテナを作ってみよう、
と思い立ったわけです。