Jakarta ee 如何使用CDI 1.0从扫描中排除类

Jakarta ee 如何使用CDI 1.0从扫描中排除类,jakarta-ee,cdi,weblogic12c,weld,Jakarta Ee,Cdi,Weblogic12c,Weld,我想在CDI 1.0中排除扫描类。我在WebLogic 12.1.12 Weld中使用CDI的默认实现,CDI 1.0 我看到了几个使用CDI 1.1的网站和文档,但以前的版本没有。我曾经遇到过这个问题,但在CDI 1.0中找不到标准解决方案。 不过有一个解决方法:用@Alternative标记一个bean,不要在beans.xml中选择这个替换项,因为它是不在元素中列出的。它应该会起作用。 同样在CDI 1.1中,他们用扫描/排除元素填补了这一空白。对于Weld,您可以使用beans.XML中

我想在CDI 1.0中排除扫描类。我在WebLogic 12.1.12 Weld中使用CDI的默认实现,CDI 1.0


我看到了几个使用CDI 1.1的网站和文档,但以前的版本没有。我曾经遇到过这个问题,但在CDI 1.0中找不到标准解决方案。 不过有一个解决方法:用@Alternative标记一个bean,不要在beans.xml中选择这个替换项,因为它是不在元素中列出的。它应该会起作用。
同样在CDI 1.1中,他们用扫描/排除元素填补了这一空白。

对于Weld,您可以使用beans.XML中的自定义XML命名空间从扫描中排除类:

 <beans xmlns="http://java.sun.com/xml/ns/javaee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:weld="http://jboss.org/schema/weld/beans">
   <weld:scan>
     <weld:exclude name="com.acme.swing.**"/>
   </weld:scan>
 </beans>
有关详细信息,请参阅。

如果由于CDI 1.1适合您,因此@Vetoed可用,则可以使用@Typed而不带值,或者与Apache DeltaSpike@Exclude一起使用。
如果您不能/不想更改该类,您可以创建CDI扩展,并在ProcessAnnotatedType.getAnnotatedType.getJavaClass返回您想要排除的类时调用observer ProcessAnnotatedType->call Vervot。

我也有同样的问题,正如@Yuri所说,如果可以修改类,则可以使用@Alternative注释实现,但如果不能,例如,它是第三方库,则无法控制它

如果您检查CD1.0的xsd,您将找不到标签,这可能会对您有所帮助


顺便说一句,有WebLogic 12.1.1和12.1.2,但没有WebLogic 12.1.12

您引用了焊接版本1.1.16。我可以使用与weld 1.0.xx相同的配置吗?