2012-04-05 68 views
0

您好:我想在Guice用我需要的参数“补充”我的课程后立即开始一项操作。做这件事的惯用方法是什么?是否有一个@after_running_constructor注释...或类似的东西,我可以标记一个“post-guice”初始化方法?guice何时注入?

通常情况下,我只是在init()方法或构造函数本身中执行此操作,但事实证明Guice并没有将必要的信息注入到我的类中,直到类的构造函数运行完毕。

回答

3

确保您的类获得所有必需“参数”的唯一惯用方法是将这些参数传递给构造函数。 查看关于易变性的简短讨论here

如果您在使用构造函数注入时遇到困难,因为构造涉及注入和参数化,您可以使用工厂模式或AssistedInject

如果要连接某些领域类,您需要知道Guice内部,我的猜测是您的方法应该重新访问。

+0

是的,这是真的 - 内部并不重要 - 他们更多的是问题的背景。谢谢 – jayunit100 2012-04-06 02:12:39

1

Guice不支持生命周期方法。一个类似的问题被问到here,那里的人推荐了Guice扩展库GuiceyFruit,但我不确定该项目是否已经被维护了。

此外,Guice注入的顺序在文档here中定义。

我很好奇,你为什么要为你的类做构造函数和方法注入?我确定有一些用例,但是你可以通过仅使用构造函数注入来解决init()问题。