java Guice IoC怎么样?
我一直在其他项目中使用Spring,但我想尝试一下Guice。因此,我查找教程和示例,发现:
public interface MyService {
void serviceOperation1();
void serviceOperation2();
void serviceOperation3();
}
public class MyServiceImpl implements MyService {
@Inject
public MyServiceImpl() {
}
public void serviceOperation1() {
// ...
}
public void serviceOperation2() {
// ...
}
public void serviceOperation3() {
// ...
}
}
public class MyServiceModule extends AbstractModule {
@Override
protected void configure() {
bind(MyService.class).to(MyServiceImpl.class).in(Scopes.SINGLETON);
}
}
我正在这样的模块中开发我的项目:
我不想要任何循环依赖
我可以把MyServiceModule
类放在哪里,这样我就不会有从core
到data
的依赖关系
把MyServiceModule
放在core
或把它放在data
会让我导入MyServiceImpl
或MyServiceModule
(分别)使core
依赖于data
模块,而data
依赖于core
我是否遗漏了一些重要的概念?在春天,我会使用上下文来实现^{
提前谢谢
# 1 楼答案
这完全取决于你如何把事情分开。如果你把它们放在一个地方,它们就会有一组依赖项
记住,MyServiceModule将而且必须依赖于MyServiceImpl,因为它是配置impl的工具。它类似于上下文xml文件,仅在java中。通常,人们会这样构造:
在项目层面,正如你所说:
当然,web包需要知道最终配置中的实现
没有依赖循环。在文件级别,您会得到这些依赖项(为了清晰起见,按类型描述——java当然不在乎)
这里再次强调,没有周期。ApplicationModule包括服务模块(仅用于分解——您可以直接在Guice.create(new MyServiceImplModule())中添加该模块)。关键是,impl的模块需要与