こっちはJavaEE Advent Calendarの方の記事になります。
昨日は@yamadamnさんの「WebLogic Server 12.1.1 on Mac OS X」でした。
Contexts and Dependency Injection (CDI/JSR-299)
今日はJavaEEのCDIの話をしようと思いましたが、
JavaEEとかよくわかってないんで、
いろいろと調べているうちに、
全然別のDependency Injection(JSR-330)の方向に進んでいってしまいました。
まあ、すこしは関係あるので、いいかな…
一応、JSR-299とJSR-330の簡単な関係を…
元々のJSR-299に対してgoogleのボブ・リーがこれじゃちょっとみたいな感じで
ロッド・ジョンソンとともに提案したのがJSR-330ですね。
で、JSR-299はJSR-330の上のレイヤーで動作するという感じになっています。
こちらを参考
tckを通してみよう
さて、CDIとDIを使ってなんか遊んでみようと思って、
Maven Repositoryを漁っていたら、
javax.injectのtckを発見しました。ということで、急遽JSR-330を実装してみることにしました。
(終わってないけどね…)
プロジェクトの作成
恥ずかしながら僕は
pom.xmlが書けないので、build.gradleはこんな感じです。tckの実行
最初、tckのソースも読まずにテストをやろうとして、
いろいろと粘っていましたが、
テストはこうやって書けよとtckのjavadocに
書いてありました。
Carというクラスはtckの中で書かれているインターフェースです。で、tckに
Carのインスタンスを渡せば、テストしてくれるようです。
TDD?
テストを先に書いたので、
org.mikeneck.inject.Injectorなんてのは存在しません。だから、コンパイルが通るように適当に実装を書いています。
まあ、当然ですが、ヌルポです。
実装についての説明もtckに書いてあります
tckのjavadocを読むと、
Carクラスの実装はConvertibleクラスだそうです。また、他にもインターフェースと実装の指定が書いてあり、
それらを参考にしながら実装することになるようです。
昨日からやり始めたことなんで、
まあ、ちょっとやそっとではできなそうですね。
適当に時間の合間を縫って実装してみたいと思います。
(かなり難しい気がする…)
なお、Google Code上にあるWikiによると、
tckを通った実装が、5つあるようです。
おしまい
なんかJavaEEとほとんど関係のない話になってしまいました。
すんません。
きっと、明日(2012/12/11)記事を書いてくださる@matsumanaさんが
話をいい方向に戻してくださると思います。

0 件のコメント:
コメントを投稿