2007-01-01から1年間の記事一覧

TSSを久々に見ました

crazybob、Guice構想の瞬間? http://www.theserverside.com/news/thread.tss?thread_id=38767#198889 ↓ http://www.theserverside.com/news/thread.tss?thread_id=38767#199028 Rod Johnson氏、痛恨のミス http://www.theserverside.com/news/thread.tss?th…

番外編。スレッドセーフ

Injectorはスレッドセーフだそうです。Injectorはインタフェースだから表現が若干不正確な気もするけど。

Google Guice(その7) 実装クラスの指定方法

インタフェースの実装クラスを指定する方法は、その2で書いたbind(インタフェース).to(実装クラス);が基本です。しかし他にもいくつかあって、その中でもちょっと毛色が違う@ImplementedByアノテーションを紹介します。 これはインタフェースにアノテーショ…

Google Guice(その6) AOP使用時のパフォーマンス比較

※下記はコードが間違っていて訂正したので、その8をご参照下さい。 その5でid:shot6さんにコメントを頂いた事もあり、AOP使用時のパフォーマンスを比較してみます。使うのは、Guice付属のパフォーマンス比較コードにAOP設定とAOPを挟んだメソッドの呼び出し…

Google Guice(その3) AOP

何ヶ月か前にGuiceを見た時AOPが見当たらなかったので「これじゃSpringの代替としては使えん」と思っていたのですが、AOPが使えるようになっています。または、当時見つけられなかった私にも見つけられるようになりました。その1で書いたように、GuiceのAOP…

Google Guice(その5) パフォーマンス比較

Guiceのテストコードに含まれる、パフォーマンス比較測定を実行してみます。 内容は、以下のような依存関係を持たせたオブジェクトをひたすらコンテナから取得し続けて、1秒間に取得できた回数を表示するというものです。 Foo foo = new Foo(); foo.setI(5);…

Google Guice(その4) メソッドやコンストラクタへのInject指定

その2で書いたコードでは、下記のようにフィールドに@Injectを宣言してInjectしてました。 @Inject private Service service; GuiceはもちろんメソッドやコンストラクタにもInject出来ます。 import sample.guice.service.Service; import com.google.inject…

ところで

特にDIのパフォーマンスで困っている訳でも、XML定義が大きすぎて困っている訳でもない私がGuiceにちょっと興味を持っているのは、ソース見たらジェネリクスがすごい事になっていたからです。正直、最初見た時ソースの文法が一部理解できなくて「ジェネリク…

Google Guice(その2) 最も単純にInjectするサンプル

一番単純なサンプルを、ユーザガイドから少し変えて書いてみます。あ、このドキュメントGoogle Docsだ。 構成は以下。 Service Injectするインタフェース ServiceImpl Injectするインタフェースの実装クラス Client ServiceがInjectされるクラス Main 起動ク…

Google Guice(その1) 概要

以前同僚のM君より存在を教えてもらったGoogleのDIコンテナGuiceですが、めでたく1.0になったようなのでちょっと見てました。 一言で言うと、「アノテーションとジェネリクスを使い、パフォーマンスを重視し、DIに特化したDIコンテナ」のようです。とりあえ…