1
00:00:00,300 --> 00:00:00,870
Bienvenidos.

2
00:00:00,960 --> 00:00:05,400
Vamos a ver otra forma de registrar componentes en el contenedor de Spring.

3
00:00:05,610 --> 00:00:10,390
Una alternativa a utilizar component o la anotación servis.

4
00:00:10,530 --> 00:00:11,010
Vámonos.

5
00:00:11,070 --> 00:00:14,460
A mi servicio vamos a comentar para Daméry.

6
00:00:15,030 --> 00:00:15,760
Component.

7
00:00:15,990 --> 00:00:16,890
Vamos a guardar.

8
00:00:16,980 --> 00:00:19,200
Vamos a ir a mi servicio complejo.

9
00:00:19,800 --> 00:00:21,300
Íbamos a comentar component.

10
00:00:21,510 --> 00:00:24,480
Ahora ambas clases son común y corriente.

11
00:00:24,570 --> 00:00:30,930
No están manejadas por Spring, no están registradas en el contenedor, por lo tanto ahora ya no se

12
00:00:30,930 --> 00:00:31,980
pueden inyectar.

13
00:00:32,100 --> 00:00:39,690
Entonces la idea ver otra forma utilizando una clase de configuración de Spring anotada con configuration

14
00:00:39,750 --> 00:00:47,790
para que sirva como una definición para crear componentes o beans de Spring mediante métodos y la anotación.

15
00:00:48,480 --> 00:00:52,470
Vamos a ello en el paquete base donde está la clase principal.

16
00:00:52,860 --> 00:00:54,590
Vamos a crear una nueva clase.

17
00:00:57,610 --> 00:01:09,490
AB Koffi Finalizar, íbamos a decorar con Configuré hecho, importamos de Spring Framework bien y vamos

18
00:01:09,490 --> 00:01:10,450
a tener métodos.

19
00:01:10,510 --> 00:01:14,620
Estos métodos crean los componentes y retorna la instancia.

20
00:01:14,710 --> 00:01:17,890
El objeto, por ejemplo, va retornar.

21
00:01:17,950 --> 00:01:22,780
En este caso, la interfaz y servicio la vamos a importar.

22
00:01:24,220 --> 00:01:27,010
Por ejemplo, registrar mi servicio

23
00:01:33,520 --> 00:01:34,600
y crear mala instancia.

24
00:01:34,600 --> 00:01:36,460
Con el operÃ horneo mi servicio.

25
00:01:36,550 --> 00:01:40,060
Importamos bien para que se puedan registrar.

26
00:01:40,150 --> 00:01:43,180
Entonces tenemos que utilizar.

27
00:01:45,070 --> 00:01:46,240
La anotación Vint

28
00:01:49,060 --> 00:01:55,780
y también le podemos dar opcionalmente, siempre y cuando tengamos más de una implementación de la interfaz

29
00:01:55,990 --> 00:01:57,280
le podemos dar el nombre.

30
00:01:57,400 --> 00:01:58,210
Por ejemplo.

31
00:01:58,270 --> 00:02:00,190
Tal como lo hicimos en mi servicio.

32
00:02:00,250 --> 00:02:00,640
Acá.

33
00:02:00,820 --> 00:02:02,320
Mi servicio simple.

34
00:02:03,980 --> 00:02:12,170
Y guardamos, guardamos mi servicio complejo con el comentario y el controlar va a inyectar el componente

35
00:02:12,290 --> 00:02:20,540
que encuentre, que sea del tipo de esta interfaz, pero acá lo tenemos, lo estábamos registrando mediante

36
00:02:20,570 --> 00:02:23,930
configuré y la anotación Vint, vamos a levantar.

37
00:02:30,110 --> 00:02:33,290
Y probamos ejecutando un proceso importante, simple.

38
00:02:33,350 --> 00:02:35,870
Perfecto, encontró el componente.

39
00:02:36,290 --> 00:02:38,450
Qué pasa si comento Vinh?

40
00:02:39,170 --> 00:02:40,040
Lo comentamos.

41
00:02:40,460 --> 00:02:41,300
A que actualice.

42
00:02:41,570 --> 00:02:43,910
Bueno, de partida lanzo un error.

43
00:02:44,150 --> 00:02:47,540
Intenta inyectar un pin, pero no lo encuentra.

44
00:02:47,750 --> 00:02:49,130
No está registrado, claro.

45
00:02:49,190 --> 00:02:50,840
Justamente por el comentario.

46
00:02:50,930 --> 00:02:53,540
Justamente porque comentamos el bit.

47
00:02:54,170 --> 00:02:55,910
Bien, lo dejamos tal como está.

48
00:02:56,450 --> 00:02:58,610
Ahora vamos a copiar el método.

49
00:02:59,570 --> 00:03:00,350
Lo pegamos.

50
00:03:00,950 --> 00:03:02,450
Ni servicio complejo.

51
00:03:03,800 --> 00:03:05,840
Registrar mi servicio complejo.

52
00:03:07,540 --> 00:03:10,430
Y creamos la instancia de mi servicio complejo.

53
00:03:12,850 --> 00:03:17,530
Bien, ahora tenemos dos candidatos y los dos implementan la misma interfaz.

54
00:03:17,680 --> 00:03:22,150
Básicamente lo mismo que vimos de la otra forma con la anotación component.

55
00:03:22,300 --> 00:03:26,830
Vamos a guardar y va lanzar el error porque no sabe cuál inyectar.

56
00:03:26,950 --> 00:03:27,490
Se fijan?

57
00:03:27,550 --> 00:03:32,500
Hay dos candidatos, pero bien, también podemos marcar con Primary cualquiera de los dos.

58
00:03:32,590 --> 00:03:36,490
Por ejemplo, quiero que mi servicio primario sea el complejo.

59
00:03:38,680 --> 00:03:39,370
Guardamos.

60
00:03:40,090 --> 00:03:41,170
Esperen a que se actualice.

61
00:03:41,260 --> 00:03:42,280
Vamos al navegador.

62
00:03:42,700 --> 00:03:45,370
inyectÃ el proceso complicado.

63
00:03:45,490 --> 00:03:46,060
Perfecto.

64
00:03:46,360 --> 00:03:47,010
Volvemos.

65
00:03:47,230 --> 00:03:48,370
Quitamos el primary.

66
00:03:48,790 --> 00:03:49,360
Lo inyectamos.

67
00:03:49,360 --> 00:03:51,670
Acá guardamos.

68
00:03:51,790 --> 00:03:53,440
Ahora inyecta el simple.

69
00:03:53,980 --> 00:03:54,910
Actualizamos.

70
00:03:55,210 --> 00:03:55,750
Perfecto.

71
00:03:55,840 --> 00:03:56,380
Simple.

72
00:03:56,770 --> 00:04:03,010
También podemos usar el cualificar, por ejemplo, para inyectar el servicio complejo que no está marcado

73
00:04:03,010 --> 00:04:04,180
como primary.

74
00:04:04,720 --> 00:04:05,920
Nos vamos al index.

75
00:04:08,620 --> 00:04:09,490
Importamos.

76
00:04:12,420 --> 00:04:15,420
Guardamos y ahora inyectÃ el complejo.

77
00:04:18,730 --> 00:04:24,970
Se fijan otra forma diferente de registrar o definir beans de Spring.

78
00:04:25,090 --> 00:04:30,580
Para que esto sea manejados por el contenedor y se puedan inyectar en otros componentes, como en los

79
00:04:30,580 --> 00:04:37,840
controladores o en otra clase de servicio, incluso se pueden inyectar en clases de configuraciones

80
00:04:37,990 --> 00:04:39,380
anotadas con configuration.

81
00:04:40,360 --> 00:04:46,690
Es importante que las clases configuration también, como cualquier clase manejada por Spring, tiene

82
00:04:46,690 --> 00:04:52,210
que estar dentro del package principal o base, ya sea en la raíz.

83
00:04:52,300 --> 00:04:59,620
O también podría estar en un sub package del paquete raíz, pero siempre dentro del contexto de Spring

84
00:04:59,710 --> 00:05:01,270
para que pueda ser manejado.

85
00:05:01,420 --> 00:05:08,830
Y esta clase la pueda leer, obtener estas definiciones de los beans y crearlas y guardarlas en el container

86
00:05:09,040 --> 00:05:09,790
en el contenedor.

87
00:05:09,910 --> 00:05:10,960
Ahora, cuál usar?

88
00:05:11,020 --> 00:05:18,350
Si usamos mediante la clase configuré hecho con el bean o anotando con compone con servis o repository.

89
00:05:19,090 --> 00:05:20,140
Bueno, depende.

90
00:05:20,230 --> 00:05:26,530
Cualquiera de las dos va a funcionar bien, pero por ejemplo, si tenemos nuestras propias clases implementadas

91
00:05:26,530 --> 00:05:30,070
por nosotros, lo podemos hacer con component o con servis.

92
00:05:31,530 --> 00:05:38,610
Aunque también lo podemos hacer en una clase de configuración, pero si son clases externas de terceros

93
00:05:38,760 --> 00:05:45,690
u otros frameworks API, por ejemplo del framework de Spring y queremos ocupar utilizar la tenemos que

94
00:05:46,020 --> 00:05:52,860
registrar de esta forma mediante configuré Schon y Vinh simplemente creamos un método la instancia %amoS

95
00:05:52,950 --> 00:05:55,170
y la guardamos con Vim, nada más.

96
00:05:55,260 --> 00:05:56,910
Por ahora quedamos hasta acá.

97
00:05:57,030 --> 00:05:57,720
Nos vemos.
