java - Guice:如何避免模块冗余

标签 java dependency-injection guice

目前,我的 Guice 模块有一些冗余,看起来有点像这样:

public GuiceModule extends AbstractModule {

  @Provides
  @Named("Thing1")
  String Thing1Provider() {
    return someFunction("Thing1");
  }

  @Provides
  @Named("Thing2")
  String Thing2Provider() {
    return someFunction("Thing2");
  }

  .......

  @Provides
  @Named("Thing5")
  String Thing5Provider() {
    return someFunction("Thing5");
  }

}

显然,这非常不方便。我该如何避免这种情况?

最佳答案

List<String> names = ...;
for (String name : names) {
    bind(String.class)
            .annotatedWith(Names.named(name))
            .toProvider(() -> doSomething(name));
}

但正如评论所建议的,我会考虑使用 MapBinder,或者在需要时直接调用 doSomething,而不是使用 @Named无处不在。

关于java - Guice:如何避免模块冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38424532/

相关文章:

java - 与可能会或可能不会回复的系统集成

java - 支持 1.0.x 的 Socket.io Java 客户端

java - 过滤和丰富对象的模式

java - 覆盖 zuul 错误过滤器导致转发错误

java - Google Guice,如何在注入(inject)类之前和之后注入(inject)资源

dependency-injection - nestjs 全局 pubsub 实例和依赖注入(inject)

android - 如何在 Roboguice 中使用上下文单例

java - Scala+Android+Roboguice : ClassNotFoundException in loader

javascript - 配置注释错误 : Argument 'fn' is not a function, 得到字符串

java - 动态决定在 Guice 中注入(inject)哪个类