java border - ¿Qué en el mundo son los frijoles de primavera?




title new (9)

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

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 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.


Primero entendamos la primavera:

La primavera es un marco ligero y flexible.

Analogía:

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.

img fuente

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étodo setBeanName() .

  • Establecer fábrica de Bean: si Bean implementa la interfaz BeanFactoryAware , Spring pasa el beanfactory al método setBeanFactory() .

  • Preinicialización: también llamado post proceso de bean. Si hay cualquier bean BeanPostProcessors asociado con el bean, Spring llama postProcesserBeforeInitialization() método postProcesserBeforeInitialization() .

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

  • BeanPostProcessors : - Si hay algún BeanPostProcessors asociado con el bean, se postProcessAfterInitialization() sus métodos postProcessAfterInitialization() .

  • Listo para usar: ahora el bean está listo para usar por la aplicación

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


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;


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.


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. :)


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.


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.


  • @component y sus especializaciones (@Controller, @service, @repository) permiten la detección automática mediante el escaneo de classpath. Si vemos una clase de componente como @Controller, @service, @repository será escaneada automáticamente por el framework Spring usando la exploración de componente.
  • Por otro lado, @Bean solo se puede usar para declarar explícitamente un solo bean en una clase de configuración.
  • @Bean solía declarar explícitamente un solo bean, en lugar de dejar que Spring lo hiciera automáticamente. Se hace una declaración de frijol de la definición de clase.
  • En resumen, @Controller, @service, @repository son para autodetección y @Bean para crear un bean seprate desde la clase
    - @Controller
    public class LoginController 
    { --code-- }

    - @Configuration
    public class AppConfig {
    @Bean
    public SessionFactory sessionFactory() 
    {--code-- }




java spring grails