Provider Methods
Provider Methodsは、Moduleの関数として定義したメソッドを、コンポーネントを取得する際のProviderとして使う機能です。
- インスタンス生成時に初期化が必要だったりする場合、Providerでコンポーネントを登録したりしますが、Providerクラスやそのインスタンスを作って渡す必要があってちょいメンドイ。Provider Methodsを使うと、メソッド定義だけでOKなのでちょっと楽になります。
- Provider Methodsを作るには、
Injector injector = Guice.createInjector( new AbstractModule(){ // @Provides が付与されたメソッドがプロバイダ関数として使われる。 @Provides String proivdeString() { return "test"; } @Provides List<String> proivdeStringList() { return Arrays.asList( "a", "b" ); } protected void configure() { // ↓こんな感じで書く必要はなくなる //binder().bind( String.class ).toProvider( new Provider<String>() { // @Override // public String get() { // return "test"; // } //} ); } }); // 文字列を取り出す。 System.out.println( injector.getInstance( String.class ) ); // 文字列のリストを取り出す。 List<String> strs = injector.getInstance( Key.get( new TypeLiteral<List<String>>(){}) ); for ( String str : strs ) System.out.println( str );
実行結果です。
test a b