15
|
Thorbjørn Ravn Andersen · 技术社区 · 14 年前 |
![]() |
1
12
我现在想要那笔赏金。弄清楚这一点让我对焊接的内部有了不少了解,这里有一个最有趣的教训:@Named是一个限定符,如果你想与之匹配,就必须这样对待它。 我确实有一个警告:如果你的应用程序中缺少任何值,它将在部署或加载时失败。这对您可能是可取的,但它确实意味着“默认”值是不可能的。 注入点的指定与上述完全相同,下面是使其工作所需的扩展代码:
最后,不要忘记/META-INF/services/javax.enterprise.inject.spi.Extension,将weldtest替换为您使用的类路径:
这应该能让这一切顺利。如果你遇到任何困难,请告诉我,我会把我的测试项目发给你。 |
![]() |
2
11
对赏金不太感兴趣,但如果还摆在桌上的话,我会接受的。这与我在$DAYJOB上使用的一些代码非常相似,所以这不是理论,而是我在生产代码中使用的代码,但是为了保护罪犯而进行了修改。我还没有尝试编译修改过的代码,所以请注意,我可能在更改名称等方面犯了一些错误,但是这里涉及的原则都经过了测试并有效。 首先,您需要一个值持有者限定符。使用@Nonbinding可防止WELD只与具有相同值的限定符匹配,因为我们希望此特定限定符的所有值都与单个注入点匹配。通过将限定符和值保持在同一个注释中,您不能意外地“忘记”其中一个。(接吻原则)
接下来,需要一个知道如何获取地图的生产者方法。您可能应该有一个包含producer方法的命名bean,这样您就可以使用getter/setters显式地初始化该值,或者让bean为您初始化它。
用法很简单:
|
![]() |
3
0
可能可以将其实现为一个@Dependent Producer方法,该方法本身会注入一个@InjectionPoint,这将允许您对要注入的字段进行反思——这将允许您查看字段上的一个自定义注释(而不是限定符)成员,以找出要返回的值
|
![]() |
4
0
将实现自定义焊接 InjectionServices 不是这里的选择吗? |
![]() |
5
0
Javadoc公司: http://download.oracle.com/javase/6/docs/api/javax/annotation/Resource.html |
![]() |
jmcollin92 · CDI注入回路 12 年前 |