最初に のコンストラクターに注釈を付ける必要がありますSomeClass
。
class SomeClass {
@Inject
SomeClass(@Named("JDBC URL") String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
}
次のようなカスタム注釈を使用することを好みます。
class SomeClass {
@Inject
SomeClass(@JdbcUrl String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@BindingAnnotation
public @interface JdbcUrl {}
}
次に、モジュールでバインディングを提供する必要があります。
public class SomeModule extends AbstractModule {
private final String jdbcUrl; // set in constructor
protected void configure() {
bindConstant().annotatedWith(SomeClass.JdbcUrl.class).to(jdbcUrl);
}
}
次に、Guice が SomeClass を作成するときに、パラメーターを注入します。たとえば、SomeOtherClass が SomeClass に依存している場合:
class SomeOtherClass {
@Inject
SomeOtherClass(SomeClass someClass) {
this.someClass = someClass;
}
多くの場合、文字列を注入したいと思うときは、オブジェクトを注入したいと思うでしょう。たとえば、文字列が URL の場合、URIにバインディング アノテーションを挿入することがよくあります。
これはすべて、モジュールの作成時に文字列に対して定義できる定数値があることを前提としています。モジュールの作成時に値が利用できない場合は、AssistedInjectを使用できます。