【问题标题】:Dependency Injection with @Inject in Weld (JSR-299 RI). How is the corresponding @Produces found?在 Weld (JSR-299 RI) 中使用 @Inject 进行依赖注入。如何找到对应的@Produces?
【发布时间】:2010-04-04 12:00:59
【问题描述】:

我曾使用 JSR-299 参考实现“焊接”,目的是在独立应用程序中使用它,我查看了文档,并惊叹于它的魔力。

我的问题是如何找到要被@Inject'ed 的给定对象的生产者?

Java 编译器为类加载器很容易找到的注释生成提示,或者必须遍历完整的类路径来加载所有类以查看它们的作用,这对我来说效率很低,或者它是一种完全不同的方法。

有什么诀窍?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • @Inject 注释本身是由 Guice 和 Spring 成员组成的团队指定的。它是另一个 JSR 的一部分。
        猜你喜欢
        • 2018-06-01
        • 2011-03-04
        • 2011-02-08
        • 2020-12-04
        • 1970-01-01
        • 2013-06-09
        • 2013-11-15
        • 1970-01-01
        • 2011-02-12
        相关资源
        最近更新 更多