我已经使用 JSR-299 参考实现“焊接”,目的是在独立应用程序中使用它,并且我查看了文档,并惊叹于它的魔力。
我的问题是如何找到要被@Inject 的给定对象的生产者?
java编译器为类加载器很容易找到的注释生成提示,或者必须遍历完整的类路径以加载所有类以查看它们的作用,这对我来说听起来效率很低,或者它是一种完全不同的方法。
诀窍是什么?
我已经使用 JSR-299 参考实现“焊接”,目的是在独立应用程序中使用它,并且我查看了文档,并惊叹于它的魔力。
我的问题是如何找到要被@Inject 的给定对象的生产者?
java编译器为类加载器很容易找到的注释生成提示,或者必须遍历完整的类路径以加载所有类以查看它们的作用,这对我来说听起来效率很低,或者它是一种完全不同的方法。
诀窍是什么?
扫描类路径以查找“bean 档案”。Bean 档案是那些包含META-INF/beans.xml
. 这些档案中的所有 bean 都会自动注册到BeanManager
并且它们的注释被解析和存储。每当需要生产者时,都会向 bean 经理咨询合格的生产者
我假设它与 Seam 中的工作方式相同:确实扫描了类路径。impl 还将搜索具有最小匹配范围的 @produce,因此您可以在会话级别为登录用户生成一个产品,而另一个在应用程序级别为匿名用户生成。
不知道,但是这个由 Hibernate 的父亲部分完成的@Inject 最终被 SpringSource 和 Google 重新设计/影响了。也许它有点像 Guice?