Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 杜松子酒支持儿童注射器吗?_Java_Gwt_Gwt Gin - Fatal编程技术网

Java 杜松子酒支持儿童注射器吗?

Java 杜松子酒支持儿童注射器吗?,java,gwt,gwt-gin,Java,Gwt,Gwt Gin,我有一个包含子应用程序的应用程序。我希望隔离GIN注入,以便每个子应用程序都可以拥有相同核心共享类的单独实例。我还希望注入器提供从一些核心模块到所有子应用程序的类,以便可以共享单例实例。e、 g GIN Modules: Core - shared MetadataCache - one per sub-application UserProvider - one per sub-application 在Guice中,我可以使用createChildInjector来实现这一点,

我有一个包含子应用程序的应用程序。我希望隔离GIN注入,以便每个子应用程序都可以拥有相同核心共享类的单独实例。我还希望注入器提供从一些核心模块到所有子应用程序的类,以便可以共享单例实例。e、 g

GIN Modules:
  Core - shared
  MetadataCache - one per sub-application
  UserProvider - one per sub-application
在Guice中,我可以使用
createChildInjector
来实现这一点,但在GIN中我看不到明显的等价物

我能在杜松子酒中达到类似的效果吗?

在这里,它在软件上。
希望能对您有所帮助。

多亏了@Abderrazakk提供的链接,我才解决了这个问题,但由于该链接的说明不是很明确,我想我也应该在这里添加一个示例解决方案:

私有GIN模块允许您具有单一层次的注入,其中在私有模块内注册的类型仅对该模块内创建的其他实例可见。在任何非私有模块中注册的类型仍然可供所有用户使用

示例

让我们有一些要注入(和注入)的示例类型:

创建如下两个私有模块(第二个模块使用ThingOwner2):

和一个共享模块:

public class MySharedModule extends AbstractGinModule {
    @Override
    protected void configure() {
        bind(SharedThing.class).in(Singleton.class);
    }
}
现在在我们的喷油器中注册两个模块:

@GinModules({MyPrivateModule1.class, MyPrivateModule2.class, MySharedModule.class})
public interface MyGinjector extends Ginjector {
    ThingOwner1 getOwner1();
    ThingOwner2 getOwner2();
}
最后,我们可以看到ThingOwner1和ThingOwner2实例在共享模块中具有相同的SharedThing实例,但在其私有注册中具有不同的Thing实例:

System.out.println(injector.getOwner1().toString());
System.out.println(injector.getOwner2().toString());
@GinModules({MyPrivateModule1.class, MyPrivateModule2.class, MySharedModule.class})
public interface MyGinjector extends Ginjector {
    ThingOwner1 getOwner1();
    ThingOwner2 getOwner2();
}
System.out.println(injector.getOwner1().toString());
System.out.println(injector.getOwner2().toString());