Java 如何限制CDI认为是托管bean的内容?

Java 如何限制CDI认为是托管bean的内容?,java,jakarta-ee,cdi,weld,Java,Jakarta Ee,Cdi,Weld,我是在多年使用spring的基础上提出这个问题的,我刚刚开始研究JEE7和CDI 在Spring世界中,您必须将@Component粘贴到一个bean上,才能变成Spring将注入依赖项的Springbean,但在CDI中,似乎没有与@Component等价的组件 对我来说,CDI似乎意味着我的web应用程序中的每个类都将被视为CDIBean,这似乎是不受欢迎的,因为我有很多java类不使用注入,我不希望有人仅仅将@Inject粘贴在这些类中,让CDI发挥它的魔力 两个问题: 如何在jar文件

我是在多年使用spring的基础上提出这个问题的,我刚刚开始研究JEE7和CDI

在Spring世界中,您必须将
@Component
粘贴到一个bean上,才能变成Spring将注入依赖项的Springbean,但在CDI中,似乎没有与
@Component
等价的组件

对我来说,CDI似乎意味着我的web应用程序中的每个类都将被视为CDIBean,这似乎是不受欢迎的,因为我有很多java类不使用注入,我不希望有人仅仅将
@Inject
粘贴在这些类中,让CDI发挥它的魔力

两个问题:

  • 如何在jar文件中限制CDI认为是托管bean的内容
  • 对于CDI来说,将每一个bean视为托管bean有什么好处?
请参阅beans.xml中关于bean发现模式的文档。此属性仅在JEE7中可用,在JEE6中不可用。

您能否详细说明bean发现模式和cdi使用的机制。有3个可能的值。全部,无,注释。ALL意味着所有可以成为CDIBean的bean(请参阅)都由归档中的容器管理。NONE表示JAR中没有类文件由CDI.container管理。而带注释的T使存档成为隐式存档。在这种情况下,容器将扫描带有注释范围类型的bean。另请参见答案,您希望不适用的任何bean都可以被赋予注释@Vetoed,CDI容器将忽略它。看见