我有一个问题:通常在Guice中我使用bind(classe)。到(另一个类实现)。。。
然而,我在一个代码源中发现,他们只使用了bind(class)(没有“.to(另一个类的实现)”部分)。。。
这是什么意思(绑定(类)而不使用“to或as”)?
以下是相关代码的一部分:
public class RestModule extends AbstractModule {
@Override
protected void configure() {
bind(RootResource.class);
bind(DeveloperUtilsRedirector.class);
bind(M34Repository.class).to(M34RepositoryImpl.class);
bind(IGARepository.class).to(IGARepositoryImpl.class);
感谢你的回答
在Guice文档中,没有to
的bind
语句称为非目标绑定(在wiki URL中拼写错误为“非目标绑定”)。从该wiki页面:
您可以在不指定目标的情况下创建绑定。这对于由@ImplementedBy
或@ProvidedBy
注释的具体类和类型非常有用。非目标[sic]绑定将通知注入器类型,因此它可能会急切地准备依赖项。
您将在Guice中看到这一点,有三个目的:
>
通过急切加载轻微提高性能。
当Guice遇到一个没有绑定的依赖项(比如类a)时,它会检查该类,看看它是否可以通过@Inject
-注释的或零参数公共构造函数注入。如果是这样,Guice将创建一个即时绑定(或“隐式绑定”)。这是通过反射完成的,并且可能会导致其他绑定的级联(请求a检查a,然后是a的依赖项B,然后是B的依赖项C,等等),这可能会导致运行时速度减慢。
通过先发制人地进行非目标绑定,您可以告知Guice一个可注入类,这允许它在启动时支付反射成本,以获得更可预测的性能。
如果Guice无法创建您注入的对象,它将引发异常,但是在@ImplementedBy或@ProvidedBy(或getInstance
或injectMembers
)的情况下,如果Guice尚未检查缺少绑定的类,它将不会失败。通过列出您使用的类,Guice将像(1)中那样预先分析这些对象,但也会在应用程序启动时识别缺少绑定。这在开发过程中可能很方便,尤其是当您在应用程序启动后很长时间内使用getInstance
或injectMembers
注入对象时;你可能希望这种失败立即发生。
虽然默认情况下启用了隐式绑定,但可以通过requireExplicitBindings
禁用隐式绑定。这意味着任何注入的类都需要有关联的绑定,包括具有合格构造函数的类。无目标绑定可以轻松解决这种情况。
我想把硒和Spring一起使用。 如果我在没有Spring的情况下使用Selenium,一切正常。每当我添加Spring依赖项(没有Spring代码)时,执行时会引发以下异常: 线程“main”java中出现异常。lang.NoClassDefFoundError:org/openqa/selenium/MutableCapabilities at java。lang.ClassLoader。在j
告诉我如何正确配置Faign和Spring Pageable的工作这里是我的Faign设置 我的朋友 获取请求工作正常。后请求的问题。我得到以下错误 在这种情况下,项目根本不会组装。 原始请求
C规范是否定义了: 布尔参数的“小于”运算符的存在性,如果存在,则为 换句话说,以下操作的结果是否由规范定义? 在我的设置(Centos 7,gcc 4.8.2)中,下面的代码吐出了我所期望的(给定C表示false为0和true为1的历史): 虽然我很确定大部分(全部?)编译器将给出相同的输出,这是由C规范规定的吗?或者,是否允许一个模糊但符合规范的编译器判断true小于false?
JUnit Jupiter附带了JUnit4提供的一些assumption方法的子集,并增加了一些适合与Java 8 lambda一起使用的方法。所有的JUnit Jupiter assumption都是org.junit.jupiter.Asumptions类中的静态方法。 import static org.junit.jupiter.api.Assertions.assertEquals;
wigmaker 《假发师》是一款模拟制作各种各样假发的放置游戏(程序员狂喜)。
问题内容: 我想在python软件包中包含spacy模型de_core_news_sm。 这是我的项目:https : //github.com/michaelhochleitner/package_de_core_news_sm。 我使用以下命令打包并安装该项目。 我想导入模块example_pkg.import-model.py。 如何将模块“ de_core_news_sm”包含到软件包中,
介绍 免费节假日API 开源了,可以离线调用, 可以集成到自己系统中 功能 检查具体日期是否为节假日,工作日对应结果为 0, 休息日对应结果为 1, 节假日对应的结果为 2;(对应支付工资比例分别为 100%, 200% 和 300%,以方便程序计算。计算方法:基本工资* (1+结果数值)) 获取具体月份下的节假日情况,只返回休息日或者节假日数据; 可同时传递一个或者多个日期(月份); 支持 20
问题内容: 有人可以使用以下示例数据解释JavaScript Truthy和Falsy。我读过其他主题,但仍然感到困惑。 根据我的理解,我相信这是唯一的真理,而其余的都是虚假的-这是正确的吗? 问题答案: 据我了解,我相信var a = 1; 是唯一的真理,其余都是虚假的-这是正确的吗? 没有。 var a = 0; 数字零是 虚假的 。但是,请注意,字符串零是真实的。 var a = 10 ==