可以在Weld中控制类路径扫描吗?

Ash*_*ash 12 dependency-injection cdi jboss-weld

我正在玩Weld-SE(Java SE)并注意到如果类路径中有很多JAR,那么JVM启动时间会持续几秒钟.

有没有办法将扫描路径指定/限制为像Apache Ant或AspectJ中的包模式或路径模式?

PS:在Weld论坛注册只是不起作用 - 它一直说"你的密码是微不足道的"

Dar*_*Whi 13

从焊接1.1.0开始,可以根据Weld参考文档:

<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" 
       xsi:schemaLocation="
          http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd
          http://jboss.org/schema/weld/beans http://jboss.org/schema/weld/beans_1_1.xsd">
    <weld:scan>
        <weld:exclude name="mypackage.MyClass"/>
    </weld:scan>
</beans>
Run Code Online (Sandbox Code Playgroud)


Otá*_*cia 6

你可以使用CDI 1.1.第一个答案工作正常,但此代码段适用于任何提供商:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
    version="1.1" bean-discovery-mode="all">

    <scan>
        <exclude name="my.cool.package" />

        <!-- you can exclude with condition -->
        <exclude name="my.cool.package.for.jodatime" />
            <if-class-not-available name="org.joda.time.LocalDate"/>
        </exclude>
    </scan>
</beans>
Run Code Online (Sandbox Code Playgroud)


Boz*_*zho 4

好问题,但我认为这是不可能的。每个档案都会beans.xml按规范进行扫描。

  • @Riduidel 谢谢。我想过删除它,但根据 CDI 规范,没有办法。焊接只是一种实现方式。我对另一个答案投了赞成票,因为它实际上是最适用的。 (4认同)