java - icon - ¿Qué en el mundo son los frijoles de primavera?
my icon java (9)
Todavía tengo que encontrar una definición de alto nivel de frijoles de primavera que pueda entender. Los veo a menudo referenciados en la documentación y los libros de Grails, pero creo que sería beneficioso entenderlos. Entonces, ¿qué son los frijoles de primavera? ¿Cómo se pueden utilizar? ¿Tienen algo que ver con la inyección de dependencia?
Los objetos que forman la columna vertebral de su aplicación y que son administrados por el contenedor Spring IoC * se denominan beans. Un bean es un objeto que está instanciado, ensamblado y gestionado por un contenedor Spring IoC. Estos beans se crean con los metadatos de configuración que proporciona al contenedor, por ejemplo, en forma de definiciones XML.
Más para aprender sobre los frijoles y el alcance de SpringSource :
Cuando creas una definición de bean, lo que realmente estás creando es una receta para crear instancias reales de la clase definida por esa definición de bean. La idea de que una definición de bean es una receta es importante, porque significa que, al igual que una clase, potencialmente puede tener muchas instancias de objetos creadas a partir de una sola receta.
Puede controlar no solo las diversas dependencias y valores de configuración que se van a conectar a un objeto que se crea a partir de una definición de bean particular, sino también el alcance de los objetos creados a partir de una definición de bean particular. Este enfoque es muy poderoso y le brinda la flexibilidad de elegir el alcance de los objetos que crea a través de la configuración en lugar de tener que "hornear" el alcance de un objeto en el nivel de clase de Java. Los beans pueden definirse para ser desplegados en uno de una serie de ámbitos
* IoC: Inversión de Control
Para la primavera, todos los objetos son frijoles! El paso fundamental en Spring Framework es definir sus objetos como beans. 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 forman básicamente los metadatos de configuración. Luego, el marco crea un plan para el cual se debe crear una instancia de los objetos, las dependencias que se deben configurar e inyectar, el alcance de la instancia recién creada, etc., en función de estos metadatos de configuración.
Los metadatos se pueden suministrar en un archivo XML simple, como en el primer capítulo. Alternativamente, uno podría proporcionar los metadatos como Anotación o Configuración de Java.
Libro: Sólo primavera
Bueno, lo entendiste parcialmente. Debe adaptar los frijoles de acuerdo con sus necesidades e informar a Spring Container para gestionarlos cuando sea necesario, utilizando una metodología conocida popularmente como IoC ( Inversión de control ) acuñada por Martin Fowler , también conocida como Dependency Injection (DI).
Usted cablea los frijoles de una manera, para que no tenga que ocuparse de la creación de instancias o evaluar cualquier dependencia en el frijol. Esto se conoce popularmente como el Principio de Hollywood .
Google es la mejor herramienta para explorar más sobre esto además de los enlaces que se inundarían aquí en esta pregunta. :)
En Spring, los objetos que forman la columna vertebral de su aplicación y que son administrados por el contenedor Spring IoC se conocen como beans. Un bean es simplemente un objeto que está instanciado, ensamblado y gestionado por un contenedor Spring IoC;
La primavera tiene el contenedor IoC que lleva la bolsa de frijol; El mantenimiento y la eliminación de la creación son responsabilidad de Spring Container. Podemos poner el frijol en primavera mediante cableado y cableado automático. Cableado significa que lo configuramos manualmente en el archivo XML y "Cableado automático" significa que colocamos las anotaciones en el archivo Java, luego Spring escanea automáticamente el contexto raíz donde se encuentra el archivo de configuración de Java, lo creamos y lo colocamos en la bolsa de Spring.
Aquí está el detalle de URI donde obtuviste más información sobre Beans.
Los beans de Spring son solo instancias de objetos que son administradas por el contenedor de Spring, es decir, son creadas y conectadas por el marco y se colocan en una "bolsa de objetos" (el contenedor) desde donde puede obtenerlos más adelante.
La parte de "cableado" allí es de qué se trata la inyección de dependencias, lo que significa es que simplemente puede decir "Necesitaré esta cosa" y el marco seguirá algunas reglas para obtener la instancia adecuada.
Para alguien que no está acostumbrado a Spring, creo que el artículo de Wikipedia Spring tiene una buena descripción :
Un elemento central de Spring Framework es su inversión en el contenedor de control, que proporciona un medio coherente para configurar y gestionar objetos Java mediante la reflexión. El contenedor es responsable de administrar los ciclos de vida de objetos de objetos específicos: crear estos objetos, llamar a sus métodos de inicialización y configurar estos objetos conectándolos entre sí.
Los objetos creados por el contenedor también se denominan objetos gestionados o beans . El contenedor se puede configurar cargando archivos XML o detectando anotaciones de Java específicas en las clases de configuración. Estas fuentes de datos contienen las definiciones de bean que proporcionan la información necesaria para crear los beans.
Los objetos se pueden obtener mediante búsqueda de dependencia o inyección de dependencia . La búsqueda de dependencia es un patrón en el que una persona que llama solicita al objeto contenedor un objeto con un nombre específico o de un tipo específico. La inyección de dependencia es un patrón donde el contenedor pasa los objetos por nombre a otros objetos, ya sea a través de constructores, propiedades o métodos de fábrica.
Los frijoles de primavera son clases. En lugar de crear una instancia de una clase (usando la new
), obtiene una instancia como un bean
convertido 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 alcance de singleton en toda la aplicación. Todos los beans se inicializan siguiendo su orden de configuración justo después de que se crea una instancia del contexto de la aplicación. Evento: si no obtiene ningún bean en su aplicación, todas las instancias de beans ya se crearán en el momento en que creó el contexto de la aplicación.
Primero entendamos la primavera:
La primavera es un marco ligero y flexible.
Bean: es un objeto que se crea, administra y destruye en Spring Container. Podemos inyectar un objeto en el contenedor Spring a través de los metadatos (ya sea xml o anotación), lo que se llama inversión de control.
Analogía: Supongamos que el agricultor está cultivando tierras de cultivo con semillas (o frijoles). Aquí, Farmer es Spring Framework, las tierras de cultivo son Spring Container, Beans son Spring Beans, el cultivo es Spring Processors.
Al igual que el ciclo de vida del frijol, los frijoles también tienen su propio ciclo de vida.
A continuación se muestra la secuencia del ciclo de vida de un bean en Spring:
Crear una instancia: primero, el contenedor Spring encuentra la definición del bean desde el archivo XML y crea una instancia del bean.
Propiedades de poblado: al usar la inyección de dependencia, Spring rellena todas las propiedades como se especifica en la definición de bean.
Establecer nombre de bean: si el bean implementa la interfaz
BeanNameAware
, spring pasa la identificación del bean al métodosetBeanName()
.Establecer fábrica de Bean: si Bean implementa la interfaz
BeanFactoryAware
, Spring pasa el beanfactory al métodosetBeanFactory()
.Preinicialización: también llamado post proceso de bean. Si hay cualquier bean BeanPostProcessors asociado con el bean, Spring llama
postProcesserBeforeInitialization()
métodopostProcesserBeforeInitialization()
.Inicializar beans: si el bean implementa
IntializingBean
, seafterPropertySet()
su métodoafterPropertySet()
. Si el bean tiene una declaración de método init, se llama al método de inicialización especificado.BeanPostProcessors
: - Si hay algúnBeanPostProcessors
asociado con el bean, sepostProcessAfterInitialization()
sus métodospostProcessAfterInitialization()
.Listo para usar: ahora el bean está listo para usar por la aplicación
Destruir: si el bean implementa
DisposableBean
, llamará al métododestroy()
Los beans de Spring son solo instancias de objetos que son administradas por el contenedor Spring IOC.
Spring IOC container lleva la creación, mantenimiento y eliminación de la bolsa de Bean.Bean son responsabilidad de Spring Container.
Podemos poner el frijol en primavera mediante cableado y cableado automático.
Cableado significa que lo configuramos manualmente en el archivo XML.
Cableado automático significa que colocamos las anotaciones en el archivo Java y luego Spring escanea automáticamente el contexto raíz donde se encuentra el archivo de configuración de Java, lo creamos y lo colocamos en la bolsa de Spring.