Я пытаюсь сделать фасад для библиотеки, которую я отдаю. В моем фасаде я использую Guice для построения графа объекта. Глубоко в графе объектов находится объект Proxy с методами getURL / setURL.
На моем фасаде, как мне получить экземпляр Proxy, используемый для создания моего корневого объекта? Я хочу, чтобы на моем фасаде были URL-геттеры и сеттеры.
Я пробовал что-то вроде этого:
public class SomeThingFacade() {
private final SomeThing thing;
private final HTTPProxy proxy;
public SomeThingFacade() {
MyModule module = new MyModule();
Injector injector = Guice.createInjector(module);
// this is the main class I'm making a facade for
this.thing = injector.getInstance(SomeThing.class);
// deep in the "thing" object graph is a Proxy implementation
this.proxy = injector.getInstance(HTTPProxy.class);
}
public void setURL(URL url) {
this.proxy.setURL(url);
}
}
но injector.getInstance создал новый экземпляр.
Связывание в MyModule:
bind(Proxy.class).to(HTTPProxy.class).asEagerSingleton();
Я ранее жестко закодировал объектный граф в конструкторе фасада, но он оказался громоздким с 30 объектами.
По сути, мне нужно сконфигурировать экземпляр глубоко в графе объектов после создания, но я не уверен, как получить этот экземпляр.