injection example dependency dependency-injection cdi jboss-weld

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>