¿Qué es un bean en Spring?: aprende sobre su uso

| Última modificación: 14 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Los bean en Spring son una parte súper importante en este framework, estos representan los componentes que el framework gestiona y utiliza para mantener el flujo de dependencias. Si te encontraste por casualidad con este concepto y no sabes qué es, sigue leyendo, hoy desentrañaremos los secretos detrás de un bean en Spring.

bean en Spring

¿Qué es un bean en Spring?

Un bean en Spring es un objeto gestionado por el contenedor de este framework. Esto quiere decir que estos objetos pueden ser básicamente cualquier cosa, ya sea servicios, controladores, repositorios, etc. El contenedor de Spring es el encargado de crear, hacer la configuración y conexión de estos objetos de forma automática. Para ser concretos, podemos decir que un bean en Spring es un componente con la capacidad de ser reutilizado, que adopta unos principios de encapsulación y gestión, como son:

  • Implementación en serie.
  • Tener atributos privados con métodos get() y set() públicos.
  • Un constructor sin argumentos o uno con argumentos predefinidos.

El contenedor de Spring: núcleo de los beans

El contenedor de Spring es donde se gestionan los beans. Este usa un patrón que se conoce como inyección de dependencias, este proceso permite a los objetos (es decir, a los beans) depender de otros objetos sin que estos tengan que ser creados de manera directa. Esto quiere decir que es el contenedor de Spring el que se encarga de todo el ciclo de vida que compone a los beans.

El contenedor es determinante en el proceso de funcionamiento de un bean en Spring y básicamente hay dos tipos:

  1. Bean Factory: un contenedor más sencillo y ligero.
  2. ApplicationContext: una versión avanzada de Bean Factory con soporte adicional para características como internacionalización y acceso a archivos.

Cómo crear un bean en Spring

Para crear un bean en Spring debemos utilizar la anotación @Bean, de cara a definir los beans personalizados que queremos que se gestionen dentro del contenedor Spring. Veamos un ejemplo:

package com.arquitecturajava.bean;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ConfiguracionBeans {

@Bean
public GestorCarpeta gestorCarpeta() {
return new GestorCarpeta("micarpeta", "mifiltro");
}
}

Por medio de este código estamos creando un bean que se llama GestorCarpeta y que contiene algunos parámetros específicos. La anotación @Bean permite que el contenedor Spring sepa que debe gestionar ese objeto y hacer que esté disponible para ser inyectado donde sea necesario.

Ciclo de vida de un bean en Spring

El ciclo de vida de un bean en Spring contiene varias fases, a saber:

  1. Instanciación: El contenedor crea una instancia del bean.
  2. Inyección de dependencias: El contenedor inyecta las dependencias necesarias (es decir, otros beans).
  3. Inicialización: Se ejecutan métodos de inicialización personalizados, si los hay.
  4. Uso del bean: El bean está listo para ser utilizado.
  5. Destrucción: Cuando el contenedor ya no necesita el bean, lo destruye.

Cada una de estas fases es gestionada de forma automática por el contenedor, lo que permite asegurarnos de que los beans en Spring estén correctamente configurados y listos para su uso en cualquier parte de la aplicación.

Tipos de beans en Spring

Los beans en Spring pueden ser configurados de diferentes formas, esto brinda una flexibilidad de ajuste a las necesidades que se tengan en cada aplicación. Algunos de los tipos de bean en Spring más comunes son:

  • Bean sin atributos: un bean simple que no requiere de dependencias externas:
@Bean
public ServicioSimple servicioSimple() {

return new ServicioSimple();
}
  • Bean con inyección de propiedades: se utiliza cuando necesitamos pasar propiedades específicas al bean por medio del uso de setters:
@Bean
public GestorCarpeta gestorCarpeta() {
GestorCarpeta gestor = new GestorCarpeta();
gestor.setRuta("micarpeta");
gestor.setFiltro("mifiltro");
return gestor;
}
  • Bean con inyección por constructor: los atributos se pasan directamente a través del constructor:
@Bean
public GestorCarpeta gestorCarpeta() {
return new GestorCarpeta("micarpeta", "mifiltro");
}
  • Beans complejos: estos incluyen referencias a otros beans o colecciones de datos, lo que los hace más versátiles.

¿Te interesó este tema y quieres seguir aprendiendo sobre el importante universo Java y todas sus características? En el bootcamp de Java podemos enseñarte esta y muchas otras cosas. Con ayuda de los mejores profesionales estarás formándote para el mercado laboral, en donde hay excelentes oportunidades y salarios competitivos. ¡No esperes más para acceder a la mejor formación!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado