配置Guice使其包含2种相同类型的服务,并具有不同的依赖关系实现方式

时间:2018-12-03 14:46:21

标签: java dependency-injection guice

我想问一下如何配置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的{​​{1}}实例(我们需要以某种方式命名实例,以便能够区分它们,因为它们具有相同的类型)将被Bar-1提供,而名为FooImpl1的实例将被Bar-2提供。

如何使用Guice配置实现此目的?我明确强调我不想以任何方式修改代码类。

谢谢!

0 个答案:

没有答案