¿Qué diablos son los frijoles de primavera?


Todavía tengo que encontrar una definición de alto nivel de frijoles de primavera que pueda entender. Los veo referenciados a menudo en la documentación y los libros de Grails, pero creo que entender lo que son sería beneficioso. Entonces, ¿qué son los frijoles de primavera? ¿Cómo se pueden utilizar? ¿Tienen algo que ver con la Inyección de Dependencia?

Author: tim_yates, 2013-06-19

10 answers

Los objetos que forman la columna vertebral de su aplicación y que son administrados por el contenedor Spring IoC * se llaman frijoles. Un frijol es un objeto que es instanciado, ensamblado y administrado de otro modo por un Contenedor de resorte CoI. Estos frijoles se crean con la configuración metadatos que suministre al contenedor, por ejemplo, en forma de Definiciones XML.

Más información sobre los frijoles y el alcance de SpringSource :

Cuando crear una definición de frijol lo que realmente está creando es un receta para crear instancias reales de la clase definida por ese bean definición. La idea de que una definición de frijol es una receta es importante, porque significa que, al igual que una clase, usted puede potencialmente tener muchas instancias de objetos creadas a partir de una sola receta.

Puede controlar no solo las diversas dependencias y configuraciones valores que se van a conectar a un objeto creado a partir de un particular definición de bean, pero también el alcance de los objetos creados de una definición particular de frijol. Este enfoque es muy poderoso y le da la flexibilidad para elegir el alcance de los objetos que crear a través de configuración en lugar de tener que 'hornear' el ámbito de un objeto a nivel de clase Java. Los frijoles se pueden definir como desplegado en uno de varios ámbitos

* CoI: Inversión del Control

 165
Author: Juned Ahsan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-22 00:13:50

Spring beans son solo instancias de objetos que son administradas por el contenedor Spring, es decir, son creadas y cableadas por el framework y puestas en una "bolsa de objetos" (el contenedor) desde donde se pueden obtener más tarde.

La parte de "cableado" es de lo que se trata la inyección de dependencias, lo que significa es que solo puede decir "Necesitaré esta cosa" y el marco seguirá algunas reglas para obtener la instancia adecuada.

Para alguien que no está acostumbrado a la primavera, creo El artículo de Wikipedia Spring tiene una buena descripción :

Central para el Marco de resorte es su inversión del contenedor de control, que proporciona un medio consistente para configurar y administrar Java objetos que usan reflexión. El contenedor es responsable de la gestión ciclos de vida de objetos específicos: crear estos objetos, llamar sus métodos de inicialización, y la configuración de estos objetos mediante cableado ellos juntos.

Objetos creados por el los contenedores también se llaman objetos administrados o frijoles . El contenedor se puede configurar cargando archivos XML o detección de anotaciones Java específicas en clases de configuración. Estos las fuentes de datos contienen las definiciones de bean que proporcionan información requerida para crear los granos.

Los objetos se pueden obtener mediante búsqueda de dependencias o inyección de dependencia. La búsqueda de dependencias es un patrón donde pide al objeto contenedor un objeto con un nombre específico o de tipo específico. Inyección de dependencia es un patrón donde el contenedor pasa objetos por nombre a otros objetos, a través de cualquiera de los constructores, propiedades, o métodos de fábrica.

 105
Author: elias,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-22 16:13:01

Bien, lo entendiste parcialmente. Debe adaptar los granos de acuerdo a sus necesidades e informar a Spring container para administrarlos cuando sea necesario, utilizando una metodología popularmente conocida como IoC (Inversión de Control) acuñada por Martin Fowler, también conocida como Inyección de dependencia (DI).

Cableas los frijoles de una manera, para que no tengas que encargarte de la instanciación o evaluar cualquier dependencia del frijol. Esto se conoce popularmente como Hollywood Principio.

Google es la mejor herramienta para explorar más sobre esto, además de los enlaces con los que te inundarías aquí en esta pregunta. :)

 22
Author: dmahapatro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-19 14:21:06

Primero entendamos la Primavera: {[12]]}

Spring es una estructura ligera y flexible.

Analogía:
introduzca la descripción de la imagen aquí

Bean: es un objeto que se crea, gestiona y destruye en un contenedor de primavera. Podemos inyectar un objeto en el Contenedor Spring a través de los metadatos(ya sea xml o anotación), que se llama inversión de control.

Analogía: Supongamos que el agricultor está teniendo una tierra cultivando por semillas (o frijoles). Aquí, El Agricultor es un Marco de Primavera, la tierra de cultivo es un Contenedor de Primavera, Los Frijoles son Frijoles de Primavera, El Cultivo es un Procesador de Primavera.

introduzca la descripción de la imagen aquí

Como el ciclo de vida del frijol, los frijoles de primavera también tienen su propio ciclo de vida.

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Fuente Img

Lo que sigue es la secuencia del ciclo de vida del frijol en primavera:

  • Instanciar: Primero la primavera container encuentra la definición del bean del archivo XML y crea una instancia del bean.

  • Rellenar propiedades: Utilizando la inyección de dependencias, spring rellena todas las propiedades como se especifica en la definición de bean.

  • Set Bean Name: Si el bean implementa la interfaz BeanNameAware, spring pasa el id del bean al método setBeanName().

  • Set Bean factory: Si Bean implementa la interfaz BeanFactoryAware, spring pasa la beanfactory a setBeanFactory() método.

  • Pre-Inicialización: También llamado post proceso de frijol. Si hay algún bean BeanPostProcessor asociado con el bean, Spring llama al método postProcesserBeforeInitialization().

  • Inicializar frijoles: Si el frijol implementa IntializingBean, se llama a su método afterPropertySet(). Si el bean tiene declaración de método init, se llama al método de inicialización especificado.

  • Post-Inicialización: - Si hay algún BeanPostProcessors asociado con el frijol, sus postProcessAfterInitialization() métodos serán called.

  • Listo para usar: Ahora el frijol está listo para usar por la aplicación

  • Destruir: Si el frijol implementa DisposableBean, llamará al método destroy()

 13
Author: Premraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-23 10:20:52

Los frijoles están en el centro de la Primavera. Son objetos Java estándar instanciados y administrados por Spring.

Los frijoles se usan principalmente para:

  • Configure Spring de alguna manera (parámetros de conexión de base de datos, seguridad, etc.)
  • Evite las dependencias de hardcoding usando inyección de dependencias , de modo que nuestras clases permanezcan autocontenidas y comprobables por unidad
 10
Author: Amine Sagaama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-24 10:23:03

Spring tiene el contenedor del CoI que lleva la Bolsa de Frijol ; la creación de mantenimiento y eliminación son las responsabilidades del Contenedor Spring. Podemos poner el frijol en la primavera por el cableado y el cableado automático. Wiring significa que lo configuramos manualmente en el archivo XML y" Auto Wiring " significa que ponemos las anotaciones en el archivo Java y luego Spring escanea automáticamente el contexto raíz donde el archivo de configuración java, lo hace y lo coloca en la bolsa de Spring.

Aquí está el detalle URI donde tienes más información sobre los frijoles

 8
Author: Yasir Shabbir Choudhary,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-11 10:12:34
  • Los frijoles de primavera son solo instancias de objetos que son administradas por el contenedor IOC de Primavera.

  • El contenedor del COI de primavera lleva la bolsa de frijoles.La creación,el mantenimiento y la eliminación de frijoles son las responsabilidades de Spring Container.

  • Podemos poner el frijol en la primavera por el cableado y el cableado automático.

  • Wiring significa que lo configuramos manualmente en el archivo XML.

  • El cableado automático significa que ponemos las anotaciones en el archivo Java y luego Spring escanee automáticamente el contexto raíz donde el archivo de configuración de Java, hágalo y póngalo en la bolsa de Primavera.

 5
Author: maniBrock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-14 06:41:42

Los frijoles de primavera son clases. En lugar de crear una instancia de una clase (usando new), obtiene una instancia como bean convertida a su tipo de clase desde el contexto de la aplicación, donde el bean es lo que configuró en la configuración del contexto de la aplicación. De esta manera, toda la aplicación mantiene la instancia de ámbito único en toda la aplicación. Todos los beans se inicializan siguiendo su orden de configuración justo después de que se instancie el contexto de la aplicación. Evento si usted no consigue ningún frijol en su aplicación, todas las instancias de beans ya se crean el momento después de crear el contexto de la aplicación.

 5
Author: Zhenyang Hua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-12 01:12:21

En Spring, aquellos objetos que forman la columna vertebral de su aplicación y que son administrados por el IoC de Spring contenedor se conocen como frijoles. Un frijol es simplemente un objeto que es instanciado, ensamblado y de otra manera gestionado por un contenedor IoC de resorte;

 2
Author: user3472473,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-14 07:14:49

Para la primavera, ¡todos los objetos son frijoles! El paso fundamental en el Marco de Spring es definir sus objetos como frijoles. Los beans no son más que instancias de objetos que serían creadas por el framework spring mirando sus definiciones de clase. Estas definiciones básicamente forman los metadatos de configuración. A continuación, el framework crea un plan para qué objetos se deben crear instancias, qué dependencias se deben establecer e inyectar, el alcance de la instancia recién creada, etc., basado en estos metadatos de configuración.

Los metadatos se pueden suministrar en un simple archivo XML, al igual que en el primer capítulo. Alternativamente, uno podría proporcionar los metadatos como Anotación o Configuración de Java.

Libro: Solo Primavera

 1
Author: BERGUIGA Mohamed Amine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-14 20:52:08