2
我尝试使用谷歌吉斯与@注入和@Singleton性能如下:吉斯配置错误
我:
- 模块与空
configure()
方法。 - 接口IFoo
- 一个类Foo(实现IFoo),用@Singleton注解,带有@Inject注释的无参数构造函数。这是单注释的构造函数。
的类,构造函数和接口是公开的,而且我依然收到以下错误:
No implementation for IFoo was bound.
我尝试使用谷歌吉斯与@注入和@Singleton性能如下:吉斯配置错误
我:
configure()
方法。的类,构造函数和接口是公开的,而且我依然收到以下错误:
No implementation for IFoo was bound.
你的意思是你这样做的时候错误?
IFoo foo = injector.getInstance(IFoo.class);
那么很明显。如果configure()
为空,那么guice应该知道什么类可以满足IFoo
的依赖关系。
只需在configure()
方法中添加它,它应该可以工作。现在,Guice知道用什么类来满足依赖关系。
bind(IFoo.class).to(Foo.class);
如果你不想在模块中配置此,你可以注释界面。例如
@ImplementedBy(Foo.class)
public interface IFoo {
...
}
的@Singleton
注释只告诉吉斯返回相同的实例类(Singleton模式)每次该类的请求通过Injector.getInstance()
制成的,而不是每次创建一个新的实例。但请注意,这仅仅是每个Injector的Singleton,而不是每个Classloader。
Bar上的@Singleton注释不告诉Guiced它是IBar的具体实现吗? 我不喜欢有一个大模块() - 我更喜欢批注类。用Guist怎么做到这一点? – ripper234 2009-07-02 13:56:50