不同项目之间的Guice依赖注入
Guice Dependency Injection between different projects
最初我开始制作 Play! Java 个项目有 Controller
、Processor
和 DAO
。我使用 Google Guice 的 @ImplementedBy
为我的 Processor
接口使用依赖注入,我的 ProcessorImpl
实现了它。
现在,我创建了另一个也需要 Processor
的项目。所以我提取了另一个单独项目的接口,比如 common,这两个项目使用该公共项目作为引用库。
问题是,我将无法再使用 @ImplementedBy
,因为该公共项目将没有这两个项目的引用。由于那是不可能的,所以我无法进行依赖注入。没有给出 @ImplementedBy
,我收到以下错误:
play.api.UnexpectedException: Unexpected exception[ProvisionException: Unable to provision, see the following errors:
1) No implementation for com.processor.Processor was bound.
有没有办法在配置文件中配置依赖项?或者可以在实现的 类?
中注入依赖项
在您的 ProcessorImpl 所在的项目中创建一个 guice 模块。
public class Module extends AbstractModule {
protected void configure() {
bind(Processor.class).to(ProcessorImpl.class);
}
}
在任何需要的地方注入处理器。
如果你调用这个模块Module并将它放在根包中,它会自动注册到Play。
最初我开始制作 Play! Java 个项目有 Controller
、Processor
和 DAO
。我使用 Google Guice 的 @ImplementedBy
为我的 Processor
接口使用依赖注入,我的 ProcessorImpl
实现了它。
现在,我创建了另一个也需要 Processor
的项目。所以我提取了另一个单独项目的接口,比如 common,这两个项目使用该公共项目作为引用库。
问题是,我将无法再使用 @ImplementedBy
,因为该公共项目将没有这两个项目的引用。由于那是不可能的,所以我无法进行依赖注入。没有给出 @ImplementedBy
,我收到以下错误:
play.api.UnexpectedException: Unexpected exception[ProvisionException: Unable to provision, see the following errors:
1) No implementation for com.processor.Processor was bound.
有没有办法在配置文件中配置依赖项?或者可以在实现的 类?
中注入依赖项在您的 ProcessorImpl 所在的项目中创建一个 guice 模块。
public class Module extends AbstractModule {
protected void configure() {
bind(Processor.class).to(ProcessorImpl.class);
}
}
在任何需要的地方注入处理器。
如果你调用这个模块Module并将它放在根包中,它会自动注册到Play。