问题标签 [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.
java - 我如何结合 Guice 和 Mapstruct?
我正在使用球衣和 Guice DI,我想使用带有@Inject
注释的 Mapstruct 接口。那么有什么方法可以强制 Guice 自动装配 Mapstruct 接口实现吗?
java - Java 泛型:关于泛型类型的元信息是否也在运行时保留?
背景
我对Java 泛型的理解是它完全是一个编译时特性(主要关注类型安全检查)。任何泛型类的类型信息都会在运行时丢失(类型擦除)。
尽管如此,我还是看到许多框架似乎也在运行时利用了类型信息。例如,谷歌 guice提供者。guice 提供者可以在运行时实例化并提供其泛型类型的新实例。
问题
是否有任何与泛型类型相关的信息也在运行时保留。? 如果 是,是什么?如果 没有,那么像 google guice 这样的库如何在内部运行(上例)
泛型不仅仅是编译时安全吗?例如,是否有任何用例(除了确保编译时安全)可以使用泛型获得优势?
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)
guice - Guice 中的 ExceptionHandler 等价物
我有控制器,它可以抛出我的自定义异常。
我想处理该异常并将响应状态设置为带有自定义消息的错误请求,因为它在 ExceptionHandler 的帮助下在春季发生。我看到了 CheckedProvider 但找不到如何设置响应状态和消息以防异常。
有没有办法这样做?
我是Guice的新手,请帮忙。
java - 请求完成后请求范围的延续
我很难找到实现以下目标的明确方法。
对于来自客户端的请求范围操作调用,我们有一个很好的实现。这些操作预计会快速灵活,即<10 ms,并且任何繁重的工作都是异步执行的,独立于调用的操作,即在单独的线程或线程池中。
在执行这些线程时,我们需要将请求范围的变量注入它们。由于当这些线程执行时请求将完成,即线程执行在请求范围之外,我们不能直接注入请求范围的变量。
一种解决方案似乎是ServletScopes.scopeRequest方法。为了有效地使用它,我们编写了一个类 RequestScopePropagator ,它有效地将所有请求范围的对象引用复制到一个映射中,并在继续期间为它们播种。
我不相信这是否是正确的方法。有没有更合适的方式/方法?
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
?
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
我正在使用文档中显示的相同代码片段。
任何建议为什么会发生这种情况?
java - Guice 的 bindEagerSingleton() 是否有任何等效的注释?
我做了这样的事情
我可以做这样的事情吗
谢谢!
java - Guice 配置错误:没有绑定 xxx 的实现
我的处理程序类:
我的界面类:
我的 Impl 类:
我要绑定的模块类:
当我运行它时,我不断收到此错误:
任何见解将不胜感激!
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
.