example español bean dependency-injection cdi circular-dependency jboss-weld

dependency-injection - español - cdi java 8



CDI inyección loop (3)

Resolví el problema usando javax.inject.Provider de forma explícita. Aunque siento que esto debería hacerse bajo el capó de WELD automáticamente, este no fue el caso también para mí. Esto funcionó para mí y resolvió mi problema relacionado.

class A { @Inject Provider<B> b; // access with b.get() } class B { @Inject Provider<A> a; // access with a.get() }

No lo he probado, pero podría ser suficiente usar un Proveedor para romper el ciclo, es decir, no es necesario que lo use en ambas clases.

Tengo un problema con la inyección de CDI en un contenedor de soldadura en JBoss 7.1.1

Tengo el siguiente modelo de objetos:

@Stateless class ServiceEjb { @Inject A a; } class A { @Inject B b; } class B { @Inject A a; }

Al intentar inyectar A o B en mi clase sin estado, se produce un ciclo de inyección y se bloquea con una javax.enterprise.inject.CreationException.

Intento muchas cosas (scoping, @Singleton en A o B pero sin éxito). No quiero romper el código, y esas inyecciones hacen los sentidos.

Cualquier pista será muy apreciada.


Debe inyectar una Instancia <B> en lugar de B (y / o Instancia <A> en lugar de A)


El estándar CDI no exige la inyección de dependencia circular , a menos que al menos un bean en el ciclo tenga un alcance normal . La solución más fácil para esto es dar a A o B un alcance normal. Si no puede dar un alcance normal (a partir de la maqueta del código, parece que todos tienen el pseudo-scope @Dependent predeterminado), tendrá que buscar otras soluciones. Publicar una muestra de código real podría permitirnos ayudarlo con una solución en particular, pero este es un comienzo:

  • ¿Pueden A y B combinarse en la misma clase?
  • ¿Se puede extraer una nueva clase, C, de A y B, de modo que tanto A como B @Inject C en lugar de uno al otro?

Aquí hay algunos enlaces SO con otras soluciones que pueden ser útiles:

MVP con CDI; evitando la dependencia circular

https://.com/questions/14044538/how-to-avoid-cdi-circular-dependency