こっちは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 件のコメント:
コメントを投稿