Java 不同项目之间的Guice依赖项注入
起初我开始写剧本!具有Java 不同项目之间的Guice依赖项注入,java,dependency-injection,playframework,guice,Java,Dependency Injection,Playframework,Guice,起初我开始写剧本!具有控制器、处理器和DAO的Java项目。我使用GoogleGuice的@ImplementedBy为我的处理器接口使用依赖注入,我的处理器MPL实现了它 现在,我已经创建了另一个项目,它也需要处理器。因此,我提取了另一个单独项目的接口,比如说common,这两个项目将该公共项目用作参考库 问题是,我将无法再使用@ImplementedBy,因为该公共项目将没有这两个项目的引用。因为这是不可能的,所以我不能进行依赖注入。如果没有给出@ImplementedBy,我将得到以下错误
控制器
、处理器
和DAO
的Java项目。我使用GoogleGuice的@ImplementedBy
为我的处理器
接口使用依赖注入,我的处理器MPL
实现了它
现在,我已经创建了另一个项目,它也需要处理器
。因此,我提取了另一个单独项目的接口,比如说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所在的项目中创建一个GUI模块
public class Module extends AbstractModule {
protected void configure() {
bind(Processor.class).to(ProcessorImpl.class);
}
}
在任何需要的地方注入处理器
如果调用此模块并将其放入根包中,它将自动向Play注册 我也创建了这个模块。但你所说的根包是什么意思?我创建了自己的包并将其放在该包中。另外,我在函数顶部使用了
@Override
。如果您已经将其放入包中,请检查是否已在application.conf文件中添加play.modules.enabled+=“modules.Module”。