在Weld中使用@Inject进行依赖注入(JSR-299 RI)。如何找到相应的@Produces?

时间:2010-04-04 12:00:59

标签: java dependency-injection java-ee-6 cdi jboss-weld

我使用JSR-299参考实现“焊接”,目的是在独立的应用程序中使用它,我已经看过文档,并对魔术感到惊讶。

我的问题是如何找到@ Inject'ed的给定对象的制作者?

java编译器可以为类加载器很容易找到的注释提供提示,或者必须遍历完整的类路径,加载所有类以查看它们对我来说效果非常低效,或者它是一种完全不同的方法。 / p>

诀窍是什么?

3 个答案:

答案 0 :(得分:4)

扫描类路径以查找“bean归档”。 Bean归档是包含META-INF/beans.xml的库。这些归档中的所有bean都会自动注册到BeanManager,并且会解析和存储它们的注释。每当需要生产者时,都会向合格的生产者咨询bean经理

答案 1 :(得分:0)

我认为它与Seam中的工作方式相同:其中确实扫描了类路径。 impl还将搜索具有最小匹配范围的@produce,因此您可以在会话级别为登录用户创建一个产品,为匿名用户在应用程序级别创建另一个产品。

答案 2 :(得分:0)

Dunno,但这个@Inject部分由Hibernate的父亲完成,最终由SpringSource和Google重新设计/影响。也许它有点像Guice?