问题标签 [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 投票
3 回答
2336 浏览

java - 我如何结合 Guice 和 Mapstruct?

我正在使用球衣和 Guice DI,我想使用带有@Inject注释的 Mapstruct 接口。那么有什么方法可以强制 Guice 自动装配 Mapstruct 接口实现吗?

0 投票
6 回答
1215 浏览

java - Java 泛型:关于泛型类型的元信息是否也在运行时保留?

背景

我对Java 泛型的理解是它完全是一个编译时特性(主要关注类型安全检查)。任何泛型类的类型信息都会在运行时丢失(类型擦除)。

尽管如此,我还是看到许多框架似乎也在运行时利用了类型信息。例如,谷歌 guice提供者。guice 提供者可以在运行时实例化并提供其泛型类型的新实例。

问题

  1. 是否有任何与泛型类型相关的信息也在运行时保留。? 如果 ,是什么?如果 没有,那么像 google guice 这样的库如何在内部运行(上例)

  2. 泛型不仅仅是编译时安全吗?例如,是否有任何用例(除了确保编译时安全)可以使用泛型获得优势?

0 投票
0 回答
329 浏览

selenium - 通过我的 Java 主程序使用 Bobcat 的 AemLogin 时出现 Guice 新手错误

我是 Bobcat 的新手(AEM 的自动化框架)。我正在尝试编写一个示例 Java 类,该类可以通过注入使用 AemLogin API。但我遇到了错误。我无法清楚地理解如何使用模块进行绑定,因为我只尝试注入一个 AemLogin 实现类。

当我运行应用程序时出现多个错误

1) 没有范围绑定到 com.cognifide.qa.bb.guice.ThreadScoped。在 com.cognifide.qa.bb.aem.AemAuthCookieFactory.class(AemAuthCookieFactory.java:51) 定位 com.cognifide.qa.bb.aem.AemAuthCookieFactory 2) 没有使用 @com.google 注释的 java.lang.String 的实现.inject.name.Named(value=author.login) 已绑定。在定位用 @com.google.inject.name.Named(value=author.login) 注释的 java.lang.String 时 3) 没有用 @com.google.inject.name.Named(value) 注释的 java.lang.String 的实现=author.password) 已绑定。在定位用@com.google.inject.name.Named(value=author.password) 注释的java.lang.String 时 4) 没有用@com.google.inject.name.Named(value) 注释的java.lang.String 的实现=author.url) 已绑定。定位用@com.google.inject.name.Named(value=author. url) 5) 没有绑定 org.openqa.selenium.WebDriver 的实现。同时定位 org.openqa.selenium.WebDriver

在 com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:961) 在 com.google.inject.internal.InjectorImpl 的 com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004) 有 5 个错误.getInstance(InjectorImpl.java:1013) 在 com.test.diageo.BobcatMain.main(BobcatMain.java:19)

0 投票
1 回答
573 浏览

guice - Guice 中的 ExceptionHandler 等价物

我有控制器,它可以抛出我的自定义异常。

我想处理该异常并将响应状态设置为带有自定义消息的错误请求,因为它在 ExceptionHandler 的帮助下在春季发生。我看到了 CheckedProvider 但找不到如何设置响应状态和消息以防异常。
有没有办法这样做?
我是Guice的新手,请帮忙。

0 投票
0 回答
122 浏览

java - 请求完成后请求范围的延续

我很难找到实现以下目标的明确方法。

对于来自客户端的请求范围操作调用,我们有一个很好的实现。这些操作预计会快速灵活,即<10 ms,并且任何繁重的工作都是异步执行的,独立于调用的操作,即在单独的线程或线程池中。

在执行这些线程时,我们需要将请求范围的变量注入它们。由于当这些线程执行时请求将完成,即线程执行在请求范围之外,我们不能直接注入请求范围的变量。

一种解决方案似乎是ServletScopes.scopeRequest方法。为了有效地使用它,我们编写了一个类 RequestScopePropagator ,它有效地将所有请求范围的对象引用复制到一个映射中,并在继续期间为它们播种。

我不相信这是否是正确的方法。有没有更合适的方式/方法?

0 投票
1 回答
167 浏览

java - 使用带有辅助参数的工厂创建实例会引发 Google Guice 异常

我有两个实现的接口

解密作业配置:

加密作业配置:

我有一个工厂界面:

安装在 Google Guice 中:

在另一个类中,我希望创建一个EncryptJobConfiguration我注入的实例JobConfigurationFactory

后来在我调用的一种方法中createEncrypt

我希望这会返回我的一个实例EncryptJobConfiguration,但它会导致此异常:

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)V

在 com.google.inject.assistedinject.FactoryProvider2.invoke(FactoryProvider2.java:824) 在 com.sun.proxy.$Proxy12.createEncrypt(Unknown Source) 在 com.infojolt.imageencrypt.CommandLineArgumentValidator.validateArguments(CommandLineArgumentValidator.java:29 ) 在 com.infojolt.imageencrypt.CommandLineArgumentValidatorTest.validateArgumentsReturnsInputStringWhenAllRequiredFieldsAreSet(CommandLineArgumentValidatorTest.java:55) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

这是我第一次使用 Google Guice,我不确定我是否误解了它应该如何工作?我应该如何创建一个新的实例EncryptJobConfiguration

0 投票
0 回答
151 浏览

java - 扩展 GuiceApplicationLoader 时出错:未绑定 play.Application 的实现。同时定位play.Application

我正在尝试在 play java 项目中扩展 GuiceApplicationLoader,如官方播放文档中所示。(https://www.playframework.com/documentation/2.6.x/JavaDependencyInjection

我收到以下错误:

play.api.UnexpectedException:意外异常[ConfigurationException:Guice配置错误:

1) play.Application 没有实现。同时定位play.Application

我正在使用文档中显示的相同代码片段。

任何建议为什么会发生这种情况?

0 投票
1 回答
56 浏览

java - Guice 的 bindEagerSingleton() 是否有任何等效的注释?

我做了这样的事情

我可以做这样的事情吗

谢谢!

0 投票
0 回答
634 浏览

java - Guice 配置错误:没有绑定 xxx 的实现

我的处理程序类:

我的界面类:

我的 Impl 类:

我要绑定的模块类:

当我运行它时,我不断收到此错误:

任何见解将不胜感激!

0 投票
1 回答
183 浏览

dependency-injection - 如何通过Guice在嵌套模块场景中注入具有相同接口的不同实现的列表?

有一个接口 DCE,它由一个类 DCEImpl 实现,该类具有一个依赖项,比如字符串 S,它通过其构造函数获取。

S 的宇宙是有限的,假设 S 只能取值 {'A','B','C'}。

有一个已经存在的 Guice 模块,它在其构造函数中接受 S 的值,然后将接口 DCE 绑定到正确初始化的 DCEImpl 版本。

现在我有一个类C,它需要一个List<DCE>包含所有 3 个实现的类(实际上比 3 个多得多,例如使用 3 个)。

我想通过 Guice 将这个列表注入到C. 为此,我创建了一个新模块DCEPModule,它将List<DCE>以这种方式提供:

我的问题是我不想在这个模块中调用新的注入器,因为DCEPModule将由不同的模块安装。

}

我想要一种List<DCE>无需在DCEPModule.