原文:IBM Developer : Sorry, that page no longer exists
訳1:Guice2.0 beta 紹介記事の翻訳(1) - 山本大の日記
訳2:Guice2.0 beta 紹介記事の翻訳(2) - 山本大の日記
訳3:Guice2.0 beta 紹介記事の翻訳(3) - 山本大の日記
訳4:Guice2.0 beta 紹介記事の翻訳(4) - 山本大の日記
訳5:Guice2.0 beta 紹介記事の翻訳(5) - 山本大の日記
訳6:Guice2.0 beta 紹介記事の翻訳(6) - 山本大の日記
定数バインディングとモジュールコンフィグレーション(Constant binding and module configuration)
重水精製所が起動するためにライセンスキーを必要とするとします。
Guiceが新しいインスタンスに対して定数値をバインドすることで対処できます。
リスト21をみてください。
リスト21.定数をモジュールにバインドする(Binding a constant value in a module)
public class HeavyWaterRefinery implements FuelSource { @Inject public HeavyWaterRefinery(@Named("LicenseKey") String key) {...} } // in HeroModule: binder.bind(String.class) .annotatedWith(Names.named("LicenseKey")).toInstance("QWERTY");
Note that I chose to use the @Named annotation despite recommending against it earlier. That's because I want to show off the code in Listing 22:
バインディングアノテーションをこの場所に設定することが必要です。
さもなければ、Guiceは異なった文字列を分離出来なくなるからです。
そう推奨しているにもかかわらず、@Namedアノテーションを選んでいることに注目してください。
ここでやりたかったことをリスト22でお見せします。
リスト22. プロパティーファイルを使ってモジュールを構築する(Configuring a module using a properties file)
//In HeroModule: private void loadProperties(Binder binder) { InputStream stream = HeroModule.class.getResourceAsStream("/app.properties"); Properties appProperties = new Properties(); try { appProperties.load(stream); Names.bindProperties(binder, appProperties); } catch (IOException e) { // This is the preferred way to tell Guice something went wrong binder.addError(e); } }
//In the file app.properties:
LicenseKey=QWERTY1234
このコードは、app.propertiesというファイルのすべてのプロパティーをバインドするために、
GuiceのNames.bindPropertieというユーティリティー機能を使っています。
これにより@Namedアノテーションに一致する定数の設定をバインドすることができます。
これはとてもクールな方法だと思います。そして、ここから色々な方法によるモジュールコードの作り方ができるということもあらわしています。
もし望むなら、バインディング情報をデータベースやXMLファイルから読み込むこともできます。
モジュールはシンプルなJavaコードであり、多くの柔軟性を与えてくれます。