1 回答
TA贡献1856条经验 获得超17个赞
通过反射 Guice 分析了
MyApplication的构造函数,发现它依赖于MessageService(public MyApplication(MessageService service))。正是这个构造函数被采用,因为它被标记为@InjectGuice 尝试找出此接口的绑定。在
AppInjector您指定的实现MessageService是EmailService(bind(MessageService.class).to(EmailService.class);)EmailService通过Java 反射 API实例化。它是通过Class.newInstance之后
EmailService被创建,它是作为参数传递MyApplication.class.newInstance()的工厂。
笔记:
默认情况下,如果您没有指定任何额外的构造函数,则有一个没有参数的默认构造函数,这就是为什么
EmailService没有依赖项的原因。EmailService实例是单例,因为它被标记为@Singleton,所以如果对它有更多的依赖,就会注入完全相同的实例如果要创建到 instance 的绑定,可以使用以下代码:
bind(MessageService.class).toInstance(new EmailService());Google 库在文档方面总是很丰富。我建议你通读这个维基:google/guice/wiki
添加回答
举报
