Skip to content

Latest commit

 

History

History

22-Spring-Core-Beans

// concepto

Un Bean es cualquier objeto gestionado por el contenedor Spring. Spring crea, configura, inyecta y destruye los beans — el programador solo los declara.

Spring detecta los beans mediante anotaciones:

@Component   // bean genérico
@Service     // capa de servicio (semántica)
@Repository  // capa de acceso a datos (+ traducción de excepciones)
@Controller  // capa web MVC
@Bean        // bean declarado manualmente en @Configuration
// key features

Ciclo de vida de un Bean:

1. Instanciación (constructor)
2. Inyección de dependencias
3. @PostConstruct         ← inicialización personalizada
4. Bean en uso
5. @PreDestroy            ← limpieza antes de destrucción
6. Destrucción

Scopes:

Scope Instancias Contexto
singleton Una por contenedor (default) Cualquiera
prototype Nueva por cada inyección Cualquiera
request Una por petición HTTP Web
session Una por sesión HTTP Web
application Una por ServletContext Web

¡Cuidado con inyectar prototype en singleton! Si un bean singleton inyecta un bean prototype, el prototype solo se crea una vez (en la inicialización del singleton). Para obtener una nueva instancia en cada llamada, usa ApplicationContext.getBean() o @Lookup.

// ventajas
  • Spring gestiona el ciclo de vida automáticamente.
  • Scope singleton por defecto: eficiente para stateless services.
  • @PostConstruct para inicialización después de DI (conexiones, caché inicial).
  • @PreDestroy para limpieza ordenada (cerrar conexiones, flush de recursos).

Ver ExpBeans.java, ExpBeanPostProcessor.java, ExpFactoryBean.java y ExpConditional.java para ejemplos ejecutables con ciclo de vida de beans, scopes, @PostConstruct y configuración condicional.