dependency-injection - example - java dependency injection frameworks
¿Se puede controlar el escaneo del classpath en Weld? (3)
Estaba jugando con Weld-SE (Java SE) y noté que si hay muchos JAR en el classpath, el tiempo de inicio de JVM se ejecuta en varios segundos.
¿No hay una manera de especificar / restringir la ruta de exploración como un patrón de paquete o patrón de ruta como en Apache Ant o AspectJ?
PD: el registro en el foro de Weld simplemente no funciona, sigue diciendo "tu contraseña es trivial"
Buenas preguntas, pero no creo que sea posible. Cada archivo se escanea en beans.xml
, por especificación.
Comenzando con Weld 1.1.0, es posible según la documentación de referencia de 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>
Puedes con CDI 1.1. La primera respuesta funciona bien, pero este fragmento funciona en cualquier proveedor:
<?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>