Google guice 3.0 が遂にリリース

Google guice 3.0 が遂にリリースされた。

JSR-330 サポートで、javax.inject.Inject を使用できるようになったことで、
3.0 で配布される javax.inject.jar classpath に通さなくてはならなくなったが、
Constructor Bindings が非常にうれしい。

JSR-330 の javax.inject.Provider を使う場合、今までの
com.google.inject.Provider を使ったときのように、
  binder().bind(Ball.class).toProvider(new BallProvider("Red"));
のように書くことはできない。
上記toProvider は、BallProvider が、com.google.inject.Provider をインターフェースにする
場合で、、
javax.inject.Provider をインターフェースにする場合は、

com.google.inject.util.Providers の
public static Provider guicify(javax.inject.Provider provider)


を使うことになる。

import com.google.inject.util.Providers;
   :
Injector injector = Guice.createInjector(new AbstractModule(){
   @Override
   protected void configure(){
      binder().bind(Ball.class)
      .toProvider(Providers.guicify(new BallProvider("Red")));
   }
});
----------------------------------------

import javax.inject.Provider;

public class BallProvider implements Provider<Ball>{
   private String color;
   public BallProvider(String c){
      this.color = c;
   }
   @Override
   public Ball get(){
      return new Ball(this.color);
   }
}


でも、@Provides が、guice 2.0 からあるわけだし、Provider の指定方法が広がった?