Я хотел бы спросить, как настроить Guice, чтобы результирующий контейнер DI содержал 2 экземпляра одного и того же класса, но каждый из них имел различную реализацию своих зависимостей.
Рассмотрим классы:
interface Foo {}
class FooImpl1 implements Foo {}
class FooImpl2 implements Foo {}
class Bar(Foo foo) {}
Предположим, что вы можете выполнить настройку зависимостей с использованием некоторого YAML (ish)
services:
-
name: "Bar-1"
type: Bar
dependencies:
- FooImpl1
-
name: "Bar-2"
type: Bar
dependencies:
- FooImpl2
Обратите внимание, что является логикой реализации в конфигурации YAML, утверждая, что, например, Bar
с именем Bar-1
(нам нужно как-то назвать наши экземпляры, чтобы иметь возможность различать их, поскольку они имеют одинаковый тип), будет поставляться с FooImpl1
, иэкземпляр с именем Bar-2
с FooImpl2
.
Как я могу добиться этого с помощью конфигурации Guice?Я явно подчеркиваю, что не хочу каким-либо образом изменять классы кода.
Спасибо!