Perfecto, ahora nos vamos a ir un poco más a lo conceptual, que es la inyección de dependencia.
Es bastante simple, significa proveer o suministrar a un objeto, una referencia, una instancia de
otro objeto, quien necesite según la relación.
Esta instancia se lo va a pasar en un atributo, se lo inyecta.
Resuelve el problema de reutilización y modularidad entre los componentes de nuestra aplicación.
Ahora.
E importante de que estos componentes.
Estos dos objetos.
El objeto al que le estamos inyectando y el objeto inyectado.
Ambos tienen que estar manejados por el contenedor.
Tienen que estar registrados.
Como ya hemos visto.
Por ejemplo.
Una forma utilizando la notación component.
Cómo funciona en este patrón tiene un contenedor y también maneja un patrón por debajo que se llama
Service Locator que se encarga de registrar y también de obtener localizar estos objetos que están guardados
dentro de este gran contenedor.
El contenedor se encarga de manejar estas instancias y dependencias de este componente mediante la relación
e inyección de dependencia.
Maneja también la creación de estos objetos cuando se registra.
Por eso es importante tener siempre un constructor sin parámetros, ya que por defecto el contenedor
va a crear estas instancias con el operador new, pero el texto por debajo.
Eso no lo vemos.
La inyección de dependencia se opone, va en contra oposición de crear los objetos de forma explícita
con el opera horneo siempre en favor a la inyección de dependencia.
Es mucho mejor evitar en lo posible el operador new.
Bueno, no siempre, porque muchas veces tenemos que crear nosotros nuestros objetos.
Por ejemplo, nuestros entity, cosas que vamos a ver después, pero típicamente en la clase de servicios,
los datos o cualquier otro objeto que queramos que lo maneje el contenedor.
Estos se manejan de forma automática, se crean, se distancian, se inyectan, se relacionan y todo
a través de este gran contenedor.
Esto permite un bajo acoplamiento entre los componentes, entre los objetos y se plasma en Spring mediante
la anotación Hatuey.
Como también ya hemos visto entonces, para resumir, permite a una clase o componente a obtener desde
el contenedor una referencia de otra instancia de un componente V, haciendo que este contenedor de
Spring inyecte o suministre el componente B en algún atributo de la clase o componente a principios.
Hollywood, tal como había mencionado, no nos llames nosotros te llamaremos nosotros te vamos a suministrar
a inyectar esta instancia.
Acá tenemos un esquema el contenedor de Spring lo tenemos por acá, componentes manejados por el framework
y acá tenemos componentes, por ejemplo controlador, cervix y los dados, por ejemplo controlador por
detrás de escena.
También está anotado con component, pero utiliza el estereotipo controller, mientras que servis también
hay un componente, pero utiliza el estereotipo servis la anotación servis y dado la anotación repository.
Pero todos ellos son componentes Spring.
Cada uno tiene su distintas tareas que hacer, distintas funciones, pero todos se crean y son manejados
por el contenedor, se guardan acá y por ejemplo un dado se va a inyectar en la clase servis, mientras
que la clase servis o esta instancia de un servicio se inyecta en el controlador.
Recordemos que los cervix por general prestan servicio de lógica de negocio.
Es una fachada para acceder a nuestros datos.
Un service puede tener varios atributos de muchos daho y cada objeto dado o de acceso a datos va a realizar
operaciones, tintas, consultas Insert, Abdi y Delight, en fin, cualquier tipo de tarea o proceso,
incluso un service dentro de un método, puede interactuar con varias operaciones de distintos datos
a distintas tablas y todo bajo una misma transacción.
Por otro lado, tenemos Internet, la clase Identity y Vernet, también mediante el Identity Manager.
También se maneja con componentes Spring y el manager.
Se puede inyectar en las clases repositorios o dado.
También tenemos la presentación Lavista, que finalmente es donde se muestra el resultado al cliente,
al usuario.
La respuesta típicamente son los objetos del modelo, que es un resultado, por ejemplo, de alguna
consulta o operación que se lleva a cabo en la lógica de negocio.
En el servis o en los datos, el controlador obtiene esta clase de modelo y se la pasa a la vista.
Repecto auto willet, anotación que permite inyectar.
especificÃ que se inyectará un objeto de Spring.
Hablemos un objeto Spring, ya sea un bean o componente, son dos nombre que se le suelen dar y se inyecta
este objeto en un atributo de otro objeto.
En otras palabras, es para inyectar un beans, un objeto de Spring en el componente actual en alguna
clase anotada con Component Oko Controller o con servis o con repository manejada por Spring.
Por defecto, la inyección falla si no encuentra un campo.
Didato disponible, por ejemplo, si queremos inyectar un tipo, una clase que no está guardada, que
no está registrada en el contenedor, es decir, que no está anotada con component o con cualquiera
de las otras.
Anotación estereotipo va a fallar porque no lo encuentra, no encuentra el componente registrado en
el contenedor.
Pero no solamente podemos inyectar en atributos, también podemos inyectar el método setter y constructor,
cosa que vamos a ver después con un ejemplo.
Bueno, acá tenemos un ejemplo a simple vista una clase component usuario component podría ser usuario
controller y estar anotada con controlar.
En fin, da lo mismo, pero un componente manejado por Spring se le inyecta otro componente que también
es manejado por Spring con ÂTu widget en el atributo y haciendo referencia al tipo genérico de la interfaz.
Básicamente, como había explicado, para desacoplar una implementación concreta, inyectar mediante
el método set o setter también muy parecido.
En vez de inyectar en el atributo, podemos usar el auto Witter.
En el método Set, por ejemplo Set Usuario Service, pasamos una referencia del usuario service como
argumento del tipo del interfaz y se guarda en el atributo Inyectamos por métodos set y también por
constructor.
Acá tenemos el constructor usuario component que recibe como argumento el servicio y lo inyecta.
En este caso, como estamos inyectando con atribuir mediante el constructor con parámetros, en este
caso no sería necesario tener un constructor vacío, ya que la inyección y la creación de este componente
usuario component lo hace mediante este constructor con parámetros, pero es porque estamos usando auto
Suirez bien anotacion component y sus derivados.
Ya hemos visto estos temas, pero para complementar la anotación, componer es un estereotipo genérico
para cualquier componente manejado, manejado por explic.
Pero además tenemos tres especializaciones para uso más específico, por ejemplo Repository para persistencia,
componentes de acceso a los datos.
Se le conoce como datos que realizan consultas, por ejemplo con JDBC de forma directa consultas a las
tablas o bien utilizando o R.M.
Con JPA o con internet, consultas o bien operaciones insert add de Delight en los Service.
Otra anotación estereotipo se utilizan para servicios de lógica negocio para fachadas, por ejemplo
para trabajar con varios dabo manejo de transacción en los métodos Enfield o cualquier tipo de clase.
Servicios no solamente relaciona con persistencia y vaciado, también puede ser un servicio que lee
un archivo plano o que realiza un request o petición a un servicio o API rest en otro servidor.
En fin, todo lo relacionado con los datos y lógica negocio independiente, el origen o el DataSource.
Net y controller para controladores MS componentes o pings.
Qué nombre usamos?
Da lo mismo.
El término bin se utiliza para referirse a cualquier componente manejado por le podemos llamar pint
o componentes.
Da lo mismo.
Lo pings deben ser anotados con la anotación componer o sus derivados.
Debe tener un constructor vacío por defecto sin argumento, excepto que inyectamos con atuvo idea mediante
constructor.
Cualquier beans anotado con component o derivados bajo el paquete base serán instancias y manejados
por el contenedor de spring.
Por eso es importante que todas nuestras clases anotadas con component y sus derivados siempre tienen
que estar dentro o en su рамках del bacas bas.
Y acá tenemos otra forma para registrar componentes de Spring.
Sin utilizar la anotación component podemos usar una clase anotada con configuration.
Le damos el nombre que queramos a la clase, por ejemplo app config o aplicación config como queramos.
Indica que la clase puede ser utilizada por el contenedor de Spring como una fuente de definiciones
de beans, es decir, que esta clase va a tener varios métodos y estos métodos van a estar anotados
con vim con las dos.
En fin, y todo objeto que retorne estos métodos se van a guardar como componentes y también la anotación
Beans.
Le podemos dar un nombre igual que component.
Acá podemos tener los paréntesis, comillas, un string y dar un nombre a este componente.
Básicamente Vim permite crear objetos y registrarlos en el contenedor, pero mediante métodos y por
supuesto utilizando el operador new, estamos creando la instancia de forma explícita y la guardamos
en el contenedor.
Entonces la anotación Vinh juega el mismo papel que anotar con la clase component.
Lo definido anteriormente en la clase app config es equivalente a tener una clase por ejemplo usuario
service que implementa la interfaz y usuario servis anotada con completo.
Entonces tenemos esas dos form.
De todas manera, vamos a ver un ejemplo utilizando configuré chón y Vinz para crear también componentes
y registrarlos en el contenedor.
Pero bien, por ahora creo que hemos visto.
Lo más importante de inyección de dependencia, así que la próxima clase continuamos con más ejemplos
y poner en práctica esta parte teórica.
Nada más.
Nos vemos.