繁体   English   中英

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

[英]Dependency Injection with @Inject in Weld (JSR-299 RI). How is the corresponding @Produces found?

我玩过JSR-299参考实现“ Weld”,目的是在独立的应用程序中使用它,并且我看了一下文档,并为之神奇。

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

Java编译器会为注释提供提示,这些提示可以通过类加载器轻松找到,或者必须遍历完整的类路径来加载所有类以查看它们的作用,这对我来说听起来效率极低,或者这是一种完全不同的方法。

诀窍是什么?

扫描类路径中的“ bean存档”。 Bean档案是那些包含META-INF/beans.xml 这些归档文件中的所有bean都会自动向BeanManager注册,并解析和存储其批注。 每当需要生产者时,都会向Bean经理咨询合格的生产者

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM