使用Google Guice在运行时注入依赖项

giri_col

我正在考虑在我的应用程序中使用Guice for DI,我应该能够在运行时交换实现。下面提供了一个示例来说明要求:

class ValidationEngine {
   public void validate(ValidationService vs) {}
}

class Client1_ValidationService implements ValidationService {}
class Client2_ValidationService implements ValidationService {}

以上实现之一应绑定为在运行时基于客户端名称(例如Client1或Client2)验证功能

我想到了像这样更改ValidationEngine:

class ValidationEngine {   
    @Inject 
    @Named("vServicee") ValidationService vs;

    public void validate() {
         vs.validate()
    }
}

上面方法的问题是@Named批注的参数是静态的。实际上,注释不接受运行时值。Guice中是否还有其他方法可以解决此类问题?

斯敏科夫

您可以尝试使用Injector.createChildInjector为每个ValidationService实现创建自己的注射器

Injector client1Injector = injector.createChildInjector(new Module() {
    @Override
    public void configure(final Binder binder) {
        binder
           .bind(ValidationService.class)
           .to(Client1_ValidationService.class);
        }
    });

ValidationEngine client1Engine = 
    client1Injector.getInstance(ValidationEngine.class)

但这意味着您必须以某种方式管理所有子注入器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Google Guice运行时依赖项注入

使用依赖项注入在运行时确定实现

ASP.NET Core依赖项注入:服务在运行时使用Func委托解析

如何使用简单的注入器在运行时更改依赖项

如何使用Google Guice在运行时基于注释注入接口实现

如何在运行时使用依赖注入创建新对象

使用Typhoon在运行时注入关闭项时,EXC_BAD_ACCESS

使用Guice注入运行时生成的值

使用spring在运行时注入BasicDataSource

如何使用 Dagger 2 在运行时注入字段?

Guice运行时依赖项参数重新注入

安全删除“未使用的”运行时依赖项

在运行时注入/管理,使用实体框架,依赖注入,工作单元和存储库模式来更改连接字符串

运行时注入:如何使用Guice获得最幼稚的Injector?

使用spring依赖注入来生成运行时生成的依赖

在我的 spring-boot 项目中使用 lombok 依赖项,但 getter 方法在运行时产生错误(尽管构建成功)

如何在@Rule运行之前使用Guice在Junit测试用例中注入依赖项?

使用ActivatorUtilities确定在运行时注入哪个实现

如何在运行时使用dagger.android从捆绑中注入参数?

如何在运行时使用JavaScript为网页注入控件?

使用依赖注入时,对运行时性能有影响吗?

在运行时使用ODEProblem的结果

使用Spring运行时值注入?

如何在运行时控制OSGi中的依赖项注入

温莎城堡在嵌套类中注入依赖项,根接口在运行时解析

何时何地在Guice中使用依赖项注入?

如何在运行时使用Simple Injector添加注入的自定义验证属性?

如何实现春天依赖注入在运行时?

使用 Hilt 进行依赖注入时如何将运行时参数传递给 ViewModel 的构造函数?