我正在做一个使用依赖注入GoogleGuice框架的项目。
可以将类与singleton作用域绑定在一起,如下所示:
bind(Foo.class).to(FooImpl.class).in(Scopes.SINGLETON);
如果类本身是一个真正的单例类:
public class FooImpl implements Foo{
public static final FooImpl INSTANCE = new FooImpl();
public static FooImpl getInstance(){...}
// ...
}
或者
public class FooImpl implements Foo{
private FooImpl instance = null;
private FooImpl(){...}
public static FooImpl getInstance(){
if(instance == null)
instance = new FooImpl();
return FooImpl();
// ...
}
// ...
}
因此,可以在项目中声明两个单例,第一个由Guice声明,第二个由getInstance()
传统方式声明。
Google Guice还可以使用toInstance()
方法将Interface绑定到特定实例。
因此,在Java中,用以下声明绑定Singleton,而不是绑定Singleton作用域,不应该是更好的方式:
bind(Foo.class).toInstance(FooImpl.getInstance());
而不是第一个?更安全吗?以这种方式有可能有两个单例实例吗?
使用Google Guice声明单身的最佳方式是什么?
您建议的第一种方法是首选的:
bind(Foo.class).to(FooImpl.class).in(Scopes.SINGLETON);
这允许Guice根据需要在FooImpl
中执行依赖项注入。当您在上一个建议中使用toInstance()
手动绑定到实例时,这是不可能的。
最后,单例设计模式是一种反模式,原因有很多。请注意,这指的是使用getInstance()
等实现;在应用的生存期内拥有一个类的单个实例(如Guice的SINGLETON
范围中的对象)无论如何都不错。
另请参见Guice关于作用域的页面,以了解singleton作用域的一些使用指南。
我有一个这样定义的单例实例: 现在,由于一些变化,这个类必须依赖于几个(3)依赖项。因此,这些依赖项必须在这里注入。 我们如何为这样设计的Singleton类实现依赖注入? 问题是,已经有很多调用方,因此无法使 getInstance 方法来接受依赖关系。 页(page的缩写)我知道使用单例并不总是一种更干净的方式:)(这是现有的代码,我不得不忍受它:) 附注:我正在使用Guice进行依赖注入。
本文向大家介绍AngularJS 依赖注入详解和简单实例,包括了AngularJS 依赖注入详解和简单实例的使用技巧和注意事项,需要的朋友参考一下 AngularJS 依赖注入 什么是依赖注入 wiki 上的解释是:依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后
我的应用程序使用Play-2.4。2/Scala-2.11。6提供了对DI的内置GUI支持 我所有的DAO都将实现绑定到下面的接口,这应该是Guice中最简单的方法 上述实现不需要添加任何模块来提供绑定。 现在由于某种原因,我不想使用@Inject注释将依赖项注入到Books类的构造函数中。所以我试着注射如下 但这给我带来了一个guice配置异常,它说: 现在需要做什么?在这种情况下,我的方法是对
本文向大家介绍php中的依赖注入实例详解,包括了php中的依赖注入实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php中的依赖注入。分享给大家供大家参考,具体如下: 依赖注入是一种允许我们从硬编码的依赖中解耦出来,从而在运行时或者编译时能够修改的软件设计模式。 我到现在依然不大明白上面“依赖注入”的定义是什么…… 有兴趣可以参考下《PHP之道》上面对“依赖注入”的 解释。 htt
我对嵌入式Cassandra的Spring单元测试有意见。问题是嵌入式Cassandra和我的Cassandra服务器同时启动。如何确保在单元测试期间只启动嵌入式Cassandra。 我正在为Cassandra使用Spring数据。 我有以下Spring配置文件。 我的上下文文件 我的测试用例如下: }
本文向大家介绍对PHP依赖注入的理解实例分析,包括了对PHP依赖注入的理解实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了对PHP依赖注入的理解。分享给大家供大家参考,具体如下: 看Laravel的IoC容器文档只是介绍实例,但是没有说原理,之前用MVC框架都没有在意这个概念,无意中在phalcon的文档中看到这个详细的介绍,感觉豁然开朗,复制粘贴过来,主要是好久没有写东西了,现在