Java 杜松子酒支持儿童注射器吗?
我有一个包含子应用程序的应用程序。我希望隔离GIN注入,以便每个子应用程序都可以拥有相同核心共享类的单独实例。我还希望注入器提供从一些核心模块到所有子应用程序的类,以便可以共享单例实例。e、 gJava 杜松子酒支持儿童注射器吗?,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 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());