2013-05-05 182 views
2

我试图在我的项目之一匕首,我遇到这种情况: “只有我声明该类作为模块定义中的入口点的字段注入才有效。匕首现场注射和入口点

这是正确的行为吗?

如果Messenger.class没有声明为入口点,则下面的依赖项不会被注入到Messenger类中。构造函数注入器工作正常,但我不想声明多参数构造函数。

public class Messenger implements NetworkInterfaceListener { 
    @Inject public NetworkInterface networkInterface; 
    @Inject public MessageFactoryInterface messageFactory; 
    @Inject public Bus bus; 
    @Inject public Logger log; 
    ... 
    ... 
} 

回答

3

你只有两种选择:要么宣布注射的构造与所有PARAMS被注入或争取全班分成entryPoints(现在叫injects)你的匕首模块和默认的构造函数中调用mGraph.inject(this)(或每当你需要实际上“注入”甚至可能在课外)。

+1

此外,根据['dagger'](http://square.github.io/dagger/)站点,“如果您的模块的绑定将用于列出的注入之外,则将该模块标记为库” ,使用'@Module(library = true)'注释 – 2013-10-12 07:30:40