Roboguice @Inject服务混乱

时间:2011-06-30 01:53:50

标签: android dependency-injection guice code-injection roboguice

private Service service;

@Inject
public ClassName(final Service service) {
    this.service = service;
}

@Inject
private Service service;

有人可以告诉我这两种注射方式之间的区别吗?

1 个答案:

答案 0 :(得分:2)

第一个表示注入器将调用构造函数并提供相应的Service对象。你在构造函数中做什么取决于你。

第二个说它会适当地设置你的成员变量(这意味着你可以有一个默认的构造函数,它仍会为你神奇地设置变量)。

一般来说,我更喜欢第一个,因为它保持你的依赖关系是显式的,但我确信使用方法2有充分的理由。

我没有使用RoboGuice,但我认为它与普通Guice具有相同的一般原则 - 并且有一些相关的@Inject文档在他们的维基上:http://code.google.com/p/google-guice/wiki/Injections