2011-08-03 26 views
1

我们正在研究使用JSR-330 javax.inject。*注释而不是com.google.inject。*等效项。它看起来像JSR-330标准没有包含我在Guice中喜欢的几个功能。是否有与@Assisted相同的javax.inject。*

具体来说,我看不到@Assisted关键字的支持。另外,@AssistedInject呢? @Inject是否可以放在多个构造函数上?

我有兴趣成为供应商中立,但不会以便利的功能为代价。任何建议?

+0

请注意,JSR-330只是API,而不是实现。 –

+0

我明白,它只是API。但是,@Assisted的使用将嵌入我们的源代码中。如果它不是API的一部分,那么如果需要的话,我们将无法“仅仅切换到另一个DI框架”。我不太了解Spring,但我认为它完成这个任务有一个完全不同的方法。 – scubadev

+0

它不是API的一部分。如果你想要真正的DI框架独立性,你必须严格地对API进行编码。 –

回答

4

@Assisted是Guice专用的。您可以将其与JSR 330的@Inject一起使用。如果你不想Guice的依赖,通过在代码中实现工厂接口来做手动辅助注入。

+0

这太糟糕了,也许它会被包含在未来版本的JSR中。 – scubadev

0

在回答你的问题之一:

是@Inject能够被放置在多个构造函数?

javadoc

注入的构造被注解为@注入,并接受零只或更多 依赖作为参数。 @Inject最多可以应用于每个类的一个构造函数 。

所以我认为答案是否定的。

相关问题