Quarkus 2.5: @Inject dentro de la subclase de la aplicación JAX-RS ya no funciona
Después de actualizar Quarkus de 1.6.1.Final a 2.5.Final, el siguiente @Inject
falla dentro de la subclase javax.ws.rs.core.Application
:
@ApplicationScoped
public class MyBean {
public String foo() {
return "bar";
}
}
@ApplicationPath("/")
public class MyApplication extends Application {
@Inject
MyBean myBean;
@Override
public Set<><?>> getClasses() {
myBean.foo(); // Causa NPE en Quarkus 2.5.Final, funcionaba bien con 1.6.1.Final
}
}
Intenté con CDI.current().select(MyBean.class).get()
pero obtuve Unable to locate CDIProvider
.
¿Hay alguna otra solución alternativa que pueda intentar? Gracias.
davy.ai
Parece que el problema está en la inicialización de CDI en Quarkus 2.5.Final. Una posible solución alternativa podría ser usar
@Inject Instance
en lugar de inyectar directamenteMyBean
. Aquí tienes una versión actualizada de la claseMyApplication
usando@Inject Instance
:Usando la interfaz
Instance
, puedes verificar si el bean está disponible antes de obtener una instancia de él. Esto debería ayudar a evitar cualquier NullPointerException causada por problemas de inicialización de CDI.Alternativamente, puedes intentar actualizar tu implementación de CDI a una versión compatible con Quarkus 2.5.Final. Ten en cuenta que Quarkus tiene una lista de implementaciones de CDI admitidas, por lo que debes verificar si tu implementación actual es compatible.