Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

284
Vistas
¿Cuál es el alcance predeterminado para un bean creado por un método @Produces sin una anotación de alcance?

Tengo un método con una anotación @Produces que crea un archivo Apple .

Cuando lo uso con @ApplicationScoped así

 public class AppleProducer { @ApplicationScoped @Produces public Apple createApple() { return new Apple(); } }

entonces Apple se crea solo una vez para toda la aplicación.

Cuando lo uso con @RequestScoped así

 public class AppleProducer { @RequestScoped @Produces public Apple createApple() { return new Apple(); } }

luego se crea para cada solicitud.

Pero, ¿y si no especifico un alcance?

 public class AppleProducer { @Produces public Apple createApple() { return new Apple(); } }

¿Con qué frecuencia se creará Apple? Sospecho en cada acceso, ¿es correcto? ¿Hay documentación sobre esto?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Es @Dependiente .

De acuerdo con "2.4.4. Alcance predeterminado " de la especificación CDI (1.2) :

Cuando no se declara explícitamente ningún alcance anotando la clase de bean o el método o campo del productor, el alcance de un bean se establece por defecto.

El ámbito predeterminado para un bean que no declara explícitamente un ámbito depende de sus estereotipos declarados:

• Si el bean no declara ningún estereotipo con un ámbito predeterminado declarado, el ámbito predeterminado para el bean es @Dependent.

• Si todos los estereotipos declarados por el bean que tienen algún ámbito predeterminado declarado tienen el mismo ámbito predeterminado, entonces ese ámbito es el ámbito predeterminado para el frijol.

• Si hay dos estereotipos diferentes declarados por el bean que declaran diferentes ámbitos predeterminados, entonces no hay un ámbito predeterminado y el bean debe declarar explícitamente un ámbito. Si no declara explícitamente un ámbito, el contenedor detecta automáticamente el problema y lo trata como un error de definición.

Si un bean declara explícitamente un ámbito, se ignoran los ámbitos predeterminados declarados por estereotipos.

over 4 years ago · Santiago Trujillo Denunciar

0

Como no define ningún Scope, su bean producido será @Dependent por defecto.

Significa que el ciclo de vida del bean producido será el ciclo de vida del bean en el que se inyecta (contiene @Inject ).

Así que si tienes el siguiente productor:

 public class AppleProducer { @Produces public Apple createApple() { return new Apple(); } }

Si inyecta una manzana en un @ApplicationScoped Pie Bean:

 @ApplicationScoped public class Pie { @Inject private Apple apple; }

Luego, el bean de Apple será @ApplicationScoped , por lo que se creará solo una vez.

Si Pie bean es @RequestScoped , Apple bean se creará en cada solicitud.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda