Я пытаюсь создать некий ConfigurationService, который будет предоставлять конфигурацию с некоторыми инъекциями. Я хочу, чтобы одно из свойств было нестабильным во время работы.
Мне бы хотелось получить что-то подобное, но я не знаюкак это сделать в Guice.
Модуль Guice:
public class ConfModule extends AbstractModule {
protected void configure() {
// how to bind class to itself, without any specific implementation
bind(Property1.class).to(Property1.class);
bind(IProperty2.class).to(Iproperty2DefaultImplementation1.class);
bind(IProperty2.class).annotatedWith(Names.named("setterOfproperty2").to( ? ? ? );
}
}
Класс конфигурации:
public class Conf {
@Inject // just consatant injected property1.class
private Property1 property1;
// variable property impl of interface
private IProperty2 property2;
// default impl of interface from module binding
@Inject
public Conf(IProperty2 property2) {
this.property2 = property2;
}
// method for changing implementation
@Inject
public setIProperty2(@Named("setterOfproperty2") IProperty2 property2) {
this.property2 = property2;
}
}
Класс обслуживания Conf:
public class ConfService {
@Inject
Conf configuration;
public Conf getConf() {
return configuration;
}
}
Использование:
public static main() {
// return Conf with default IProperty2 impl
Injector injector = Guice.createInjector(new ConfModule());
ConfService c = injector.getInstance(ConfService.class);
// change to other Iproperty2Implementation
c.getConf().setIProperty2(new Iproperty2Implementation2());
}
Кто-нибудь захочет мне помочь?