Las anotaciones ApplicationScoped, RequestScoped, SessionScoped, Produces y Singleton son las que te van a permitir aplicar el principio de inyección de dependencia en proyectos de Jakarta que hagan uso de CDI. Cualquier framework MicroProfile (como Quarkus u Open Liberty) tendrá soporte para inyección de dependencia ya que es un requisito de MicroProfile. Sin embargo, lo puedes incorporar a proyectos de Java empresarial por tu cuenta.
Lo importante es que la inyección de dependencia te permite marcar una clase de servicio como una clase que puede ser inyectada en otros servicios y controladores, de tal manera que sea el propio runtime el que se ocupe de instanciar y proporcionar parámetros a tus constructores, para que la lógica esté aislada en servicios reusables e independientes que también sean más fáciles de testear.
Si quieres saber más sobre inyección de dependencia en Jakarta EE, recuerda consultar el tutorial donde introduzco a la anotación Inject y donde describo el proceso de inyección de dependencia a nivel teórico: https://youtu.be/jUHUB_-dbdA