问题标签 [guice-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3590 浏览

java - guice 辅助注入工厂中通用返回类型的问题

到目前为止,我成功使用了 google guice 2。在迁移到 guice 3.0 时,我遇到了辅助注入工厂的问题。假设以下代码

在创建注入器时,我得到以下异常:

使用来自 guice 2 的辅助注入创建器,我的配置工作:

到目前为止,我发现的唯一解决方法是从工厂方法的返回类型中删除泛型参数:

有谁知道,为什么 guice 3 不喜欢工厂方法中的泛型参数,或者我对辅助注入工厂的普遍误解?谢谢!

0 投票
1 回答
467 浏览

maven - 从 maven 中央存储库下载 guice3.0 工件

我正在尝试将我的 struts2 Web 应用程序从 guice2.0 升级到 guice3.0。我正在尝试使用 maven jetty 对其进行测试。我已成功升级我的 pom.xml 以使用 3.0 版本的正确版本和 groupId,但如果我调用 mvn jetty:run 我看到它正在尝试下载 guice-3.0-no_deps.jar

哪个会引发构建错误并且找不到中央存储库?

如果我不包含任何 guice 扩展,我不会收到此错误。

有任何想法吗?

谢谢

0 投票
1 回答
4203 浏览

guice - Guice 中的模块初始化和销毁​​处理程序?

以下链接描述了如何使用带有 start() 和 stop() 方法的 Service 接口在 Guice 中处理模块初始化和销毁​​:

http://code.google.com/p/google-guice/wiki/ModulesShouldBeFastAndSideEffectFree

文档解释说,服务的创建在客户端代码中如下所示:

但没有列出具体服务类的任何示例实现。谁能给我一份?至少是 start() 和 stop() 包含的示例实现。

0 投票
2 回答
1233 浏览

guice - 根据类的 Annotation 绑定构造函数参数

我有一个接口:InterfaceA

我有一堂课:ConcreteA

我还有两个注释:@AnnotA@AnnotB

我已经完成了以下绑定:

接下来,ConcreteA 类有一个构造函数,它接受一个String名为hostName的参数。

我需要代码来描述以下内容:

如果 ConcretaA 正在使用 @AnnotA,则将 hostName 与字符串值 'localhost' 绑定

如果 ConcreteA 正在使用 @AnnotB,则将 hostName 与字符串值“externalhost”绑定

对此有任何解决方案的想法吗?

0 投票
1 回答
1038 浏览

java - 依赖注入的正确结构(使用 Guice)

我想要一些关于为具有下述结构的系统构建依赖注入的最佳方法的建议和反馈。我正在使用 Guice,因此更喜欢以基于注释的声明为中心的解决方案,而不是重 XML 的 Spring 样式配置。

考虑一组相似的对象,Ball, Box, and Tube每个都依赖于一个Logger,通过构造函数提供。(这可能并不重要,但所有四个类都恰好是单例 --- 应用程序,而不是四人组,品种。)

一个ToyChest类负责创建和管理三个形状对象。 除了创建形状对象之外,ToyChest它本身不依赖于。Logger

该类ToyChest被实例化为类中的应用程序单例Main

我对构建形状的最佳方法感到困惑ToyChest。我要么 (1) 需要访问已附加到实现绑定的 GuiceInjector实例,要么 (2) 需要创建一个附加到 right的新实例。ModuleLoggerInjectorModule

(1) 是通过向 中添加一个@Inject Injector injector字段来完成的ToyChest,但这感觉很奇怪,因为ToyChest实际上并没有任何直接依赖关系——只有它实例化的孩子的依赖关系。

对于 (2),我不确定如何传入适当的Module.

我在正确的轨道上吗?有没有更好的方法来构建它?

这个问题的答案提到传递 aProvider而不是直接使用 Injector ,但我不确定它应该如何工作。

编辑:

也许一个更简单的问题是:在使用 Guice 时,构造形状对象的合适位置在哪里? ToyChest将对它们进行一些配置,但我想它们可以在其他地方构建。 ToyChest(作为管理它们的容器),而不是Main,在我看来只是构建它们的合适位置。

0 投票
1 回答
40417 浏览

java - 如何使用 Guice 的 AssistedInject?

我已经阅读了https://github.com/google/guice/wiki/AssistedInject,但它没有说明如何传递 AssistedInject 参数的值。injector.getInstance() 调用会是什么样子?

0 投票
1 回答
527 浏览

jersey - Jersey, Guice 使用非根请求路径

我在标准配置中在 Tomcat 6.0.32 上使用 Jersey 1.11 而不是 Guice 3.0:

还有一个简单的资源类:

鉴于此,我认为访问“/ws/resource”会起作用;但实际上没有找到资源。问题似乎在于未正确计算请求路径。作为一种解决方法,我已将参数设置PROPERTY_FILTER_CONTEXT_PATH/ws,这使整个工作正常:

因此我的问题是:

  1. 这真的是一个错误还是一个“功能”?
  2. 是否有其他解决方案或解决方法?

有关信息,我看到了一个可能相关的 Guice 错误,它似乎已合并到另一个错误中,但我想知道它是否已正确修复(链接

0 投票
1 回答
319 浏览

java - Guice3 Singleton 从未在 GAE 项目中实例化

我是 Guice 的新手,已经被卡住了:)

我几乎从Motomapia 项目(您可以浏览)中复制了 GuiceConfig、OfyFactory 类并稍微修改了 Ofy,并将其用作示例。

我创建GuiceServletContextListener的看起来像这样

我将此侦听器添加到我的 web.xml

OfyFactory 看起来像这样

Ofy 根本没有任何 Guice 注释......

最后测试我试图使用注入字段的servlet看起来像这样

Ofy ofy 始终为空。它从来没有注射过。并且它没有被注入,因为 OfyFactory 从未实例化,它的构造函数从未被调用。

你能指出我做错了什么吗?为什么我的单例从未创建?

非常感谢。

0 投票
1 回答
1073 浏览

java - Guice 绑定提供程序未用于依赖项实现

我正在尝试使用提供程序注入将预先配置的对象注入工厂:

当我使用注入器获取MyCacheFactory实例时,我没有得到日志输出和未配置的CacheBuilder<Object, Object>实例;我的配置都没有应用。设置断点验证提供程序从未被使用。

我也尝试过申请@Named("MyCacheBuilder")合适的作品:

当我尝试运行此代码时,我得到CreationException

我还在类和构造函数声明中尝试了原始和泛型类型引用的各种组合,但没有额外的成功。

我可以通过简单地创建提供程序并绑定从get()我自己返回的实例来解决这个问题,但我希望(并且希望)Guice 会为我做这件事。

我的设置有什么微妙(或明显)的问题吗?

0 投票
1 回答
2666 浏览

guice - Guice,注入类型Literal使用@AssistedInject 时

这有效:

当我这样做时,Guice 会自动注入表示 String 的 TypeLiteral:

但是当使用辅助注入尝试同样的事情时:

我的模块看起来像这样:

安装模块时出现异常:

这当然是我试图注入的 TypeLiteral 问题,因为当我删除它时,通用工厂确实可以正常工作。

所以,我现在可能只是建立自己的工厂,但我很好奇这是否可行?使用 FactoryModuleBuilder 是否略有不同?