1
00:00:00,180 --> 00:00:05,910
Sigamos con la clase servis, la clase de servicio que se encarga de trabajar con los datos, de operar.

2
00:00:05,940 --> 00:00:06,990
Todo lo que es lógica negocio.

3
00:00:07,080 --> 00:00:12,000
Bueno, por lo general un servis es una fachada a los objetos daho de acceso a datos, por ejemplo,

4
00:00:12,000 --> 00:00:16,760
que realicen consultas y operaciones en las tablas del asiento independiente.

5
00:00:16,770 --> 00:00:20,190
Si estamos utilizando por ejemplo JBS o algun@ o R.M.

6
00:00:20,250 --> 00:00:26,820
Como Vernet con JPA, effi da lo mismo, pero que acceden a los datos que realizan consultas operaciones

7
00:00:26,880 --> 00:00:28,080
para implementar un CRUD.

8
00:00:28,170 --> 00:00:34,350
Pero un servis podría tener un atributo de un dado o varios atributos, es decir, varios y estos dados

9
00:00:34,380 --> 00:00:38,250
podrían interactuar bajo una misma transacción en un método.

10
00:00:38,310 --> 00:00:42,600
Pero bueno, la cosa es que vamos a ver en el curso la idea ahora a partir de simple con un ejemplo

11
00:00:42,660 --> 00:00:46,530
para explicar la inyección dependencia de qué se trata este patrón?

12
00:00:46,590 --> 00:00:51,870
Pero bien, en esta clase primero vamos a partir sin inyección dependencias para que vea la diferencia

13
00:00:51,990 --> 00:00:53,370
y cómo se acopla.

14
00:00:53,400 --> 00:00:58,560
Por ejemplo, esta clase servis cuando no usamos inyección de dependencia ni tampoco interface.

15
00:00:58,600 --> 00:01:00,150
Cómo se acopla al controlador?

16
00:01:00,480 --> 00:01:03,120
Lo primero en Models vamos a crear otro package.

17
00:01:03,660 --> 00:01:07,980
Veamos, se llama Servicie Service dentro de Models.

18
00:01:08,100 --> 00:01:10,080
Finalizar perfecto.

19
00:01:10,140 --> 00:01:12,270
Y acá vamos a crear nuestra clase.

20
00:01:12,660 --> 00:01:15,450
Mi servicio o el nombre que queramos.

21
00:01:15,540 --> 00:01:15,890
Listo.

22
00:01:15,900 --> 00:01:16,710
Finalizamos.

23
00:01:17,310 --> 00:01:18,750
Bien, por ahora algo simple.

24
00:01:18,870 --> 00:01:23,460
Después acá vamos a anotar, por ejemplo con component o servis.

25
00:01:23,530 --> 00:01:27,660
Bueno, después lo vamos a ver para que sean componentes Brink sea manejado por el framework, por el

26
00:01:27,660 --> 00:01:31,860
contenedor y lo podemos inyectar, pero por ahora no vamos a usar intución de Pnce.

27
00:01:31,890 --> 00:01:33,750
Por lo tanto, tampoco lo vamos a notar.

28
00:01:33,840 --> 00:01:38,340
Solamente una clase con un método, un método o alguna operación.

29
00:01:40,380 --> 00:01:47,430
Bueno que retorna un string por ahora algo simple pero bien en un proyecto real con base dato.

30
00:01:47,490 --> 00:01:50,610
Por ejemplo para implementar un crup métodos del servis.

31
00:01:50,730 --> 00:01:56,520
Bueno, típicamente van a ser, por ejemplo para listar, para guardar, para eliminar, para modificar,

32
00:01:56,580 --> 00:01:57,960
para filtrar por nombre.

33
00:01:58,020 --> 00:02:04,380
En fin, iba a retornar una lista de objetos o bien un objeto que esté mapeado alguna tabla, una entity

34
00:02:04,410 --> 00:02:05,910
un poco, pero por ahora.

35
00:02:06,000 --> 00:02:07,890
Bueno, un string, algo simple.

36
00:02:07,950 --> 00:02:12,330
Y después, más adelante en el curso vamos a trabajar con bases de datos y vamos a implementar los servi

37
00:02:12,360 --> 00:02:15,150
con un CRUD con objeto mapeado a tablas en.

38
00:02:21,870 --> 00:02:26,880
Por ejemplo, ejecutando un proceso importante, no sé de lógica, negocio, relación a los datos,

39
00:02:26,940 --> 00:02:27,210
en fin.

40
00:02:27,320 --> 00:02:29,380
Y otro tema importante, el servis.

41
00:02:29,460 --> 00:02:34,290
Bueno, por lo general interactúa con datos que acceden a los datos que trabajan con pasearlos, pero

42
00:02:34,290 --> 00:02:40,290
también un servicio podría comunicar mediante API rest utilizando un cliente http como rest template

43
00:02:40,380 --> 00:02:42,810
para obtener los datos desde otro servicio.

44
00:02:42,900 --> 00:02:47,070
Por ejemplo, en una arquitectura de micro servicios con Jason API rest.

45
00:02:47,190 --> 00:02:47,520
En fin.

46
00:02:47,610 --> 00:02:47,820
Bueno.

47
00:02:47,850 --> 00:02:54,660
Pero típicamente con acceso a datos con los daho o con repository con métodos que realizan consultas

48
00:02:54,750 --> 00:02:56,220
u operaciones a tablas.

49
00:02:56,310 --> 00:02:58,500
En las Cerrato ya tenemos listo nuestro service.

50
00:02:58,690 --> 00:03:01,140
Entonces ahora lo tenemos que utilizar en el controlador.

51
00:03:01,230 --> 00:03:01,980
Vamos a guardar.

52
00:03:02,070 --> 00:03:03,180
Nos vamos al controlador.

53
00:03:03,920 --> 00:03:07,080
Bueno, y acá lo tenemos que implementar, utilizar este CERMI.

54
00:03:07,200 --> 00:03:13,170
Recuerden que el controlador interactúa con los datos, con el modelo, con clase SERVIS, pero lo vamos

55
00:03:13,170 --> 00:03:19,020
a implementar primero con el operador NEW sin inyección dependencia, de forma que quede acoplado a

56
00:03:19,020 --> 00:03:20,190
esta implementación concreta.

57
00:03:20,280 --> 00:03:25,500
Y lo podemos hacer acá dentro del método crear la instancia del servicio con el NEW.

58
00:03:25,590 --> 00:03:30,120
O bien como atributo también lo vamos a hacer como atributo private.

59
00:03:30,360 --> 00:03:33,900
El tipo mi servicio importamos.

60
00:03:36,880 --> 00:03:38,610
Servicio y bueno.

61
00:03:38,740 --> 00:03:39,220
New.

62
00:03:40,150 --> 00:03:46,300
Mi servicio perfecto se fijan eita muy acoplaba y tenemos un problema importante, sobretodo en una

63
00:03:46,300 --> 00:03:48,070
aplicación mediana o grande.

64
00:03:48,160 --> 00:03:52,210
Vamos a tener un problema de mantención y escalabilidad de la aplicación.

65
00:03:52,360 --> 00:03:57,970
Claro, porque al estar acoplado a una implementación concreta, por ejemplo, el tipo mi servicio,

66
00:03:58,240 --> 00:04:03,880
este nombre de clase podría ser reemplazado por otra implementación que también implemente el método

67
00:04:03,970 --> 00:04:04,510
operación.

68
00:04:04,570 --> 00:04:09,220
Este método, por ejemplo, podríamos tener otra clase con este mismo nombre método, pero que la implementación

69
00:04:09,220 --> 00:04:10,450
cambie, por ejemplo.

70
00:04:10,510 --> 00:04:16,510
Bueno, ahora retorna un dato con un streak literal, pero esta información lo podría obtener desde

71
00:04:16,630 --> 00:04:24,010
otro micro servicio o bien desde la base dato con JPA e implementado con internet a través de una clase

72
00:04:24,010 --> 00:04:24,430
dado.

73
00:04:24,550 --> 00:04:28,750
Entonces la implementación podría cambiar y el nombre de la clase también podría cambiar.

74
00:04:28,870 --> 00:04:34,120
Entonces, claro, podríamos tener muchos controladores que estén utilizando esta clase servis y tendríamos

75
00:04:34,120 --> 00:04:38,420
que estar editando, modificando cada controlador y vamos a perder un tiempo enorme.

76
00:04:38,530 --> 00:04:40,630
Entonces no fue una práctica que esté tan acoplado.

77
00:04:40,690 --> 00:04:45,820
Entonces, como solución es utilizar primero inyección, dependencias y segundo interfaces.

78
00:04:45,910 --> 00:04:48,220
Y con la inyección de dependencia es todo al revés.

79
00:04:48,280 --> 00:04:50,380
Por ejemplo, acá estamos creando la instancia.

80
00:04:50,470 --> 00:04:58,030
La idea es que nosotros no llamemos al objeto, no lo instancia, sino que el objeto, en este caso

81
00:04:58,150 --> 00:05:05,530
el contenedor de Spring a través de los beans o componentes, él nos llama al controlador y nos inyecta

82
00:05:05,590 --> 00:05:06,310
la instancia.

83
00:05:06,400 --> 00:05:11,830
La probé y de hecho de ahí viene un principio de inyección dependencia que se llama Hollywood, tal

84
00:05:11,830 --> 00:05:16,030
cual como el principio Hollywood que dice no nos llames, nosotros te llamaremos.

85
00:05:16,090 --> 00:05:18,220
Bueno, básicamente que no quería la instancia.

86
00:05:18,310 --> 00:05:22,190
Nosotros la vamos a crear por ti y vamos a manejar esta instancia y esa la idea.

87
00:05:22,240 --> 00:05:27,750
Pero por ahora, como explicaba, vamos a partir sin inyección, dependencia tal cual, de forma acopladas.

88
00:05:27,810 --> 00:05:33,010
Bueno, y después la siguiente clase la vamos a implementar y después vamos a implementar el uso de

89
00:05:33,010 --> 00:05:38,590
interfaces para desacoplar el tipo concreto y sea lo más genérico posible y lo más abstracto.

90
00:05:38,740 --> 00:05:43,810
Entonces, a través de un interfaz podríamos tener varias implementaciones, pero inyectamos a través

91
00:05:43,810 --> 00:05:44,650
del tipo genérico.

92
00:05:44,770 --> 00:05:50,050
De esa forma no tenemos que estar modificando el código ni editando los controladores, porque el tipo

93
00:05:50,140 --> 00:05:54,160
es abstracto, genérico, es una interfaz y no una clase concreta.

94
00:05:54,290 --> 00:06:02,830
Bien, entonces ahora vamos a pasar esto a la vista usando model punto at atributo, algún nombre,

95
00:06:02,920 --> 00:06:09,850
por ejemplo, objeto o nombre que queramos y por acá servicio, punto, operación.

96
00:06:11,060 --> 00:06:16,490
Entonces estamos pasando el dato de que fuimos a buscar mediante el servis a la vista para imprimirla,

97
00:06:16,550 --> 00:06:18,590
para mostrarla, pero bien, acá tenemos la vista.

98
00:06:18,650 --> 00:06:26,180
Índex La tenemos que crear donde en Recursos, Resources y templates, acá creamos con New Otro.

99
00:06:26,750 --> 00:06:27,830
Por acá buscamos web.

100
00:06:28,190 --> 00:06:28,970
Acá la tenemos.

101
00:06:29,300 --> 00:06:29,870
HTML.

102
00:06:30,080 --> 00:06:30,620
HTML.

103
00:06:30,620 --> 00:06:30,890
File.

104
00:06:31,860 --> 00:06:33,960
Lo marcamos siguiente.

105
00:06:35,670 --> 00:06:36,780
Index puntu html.

106
00:06:37,410 --> 00:06:37,980
Finalizar.

107
00:06:38,900 --> 00:06:44,600
Bueno, lo modificamos lo primero, el HTML, colocar el next post de timeline, pero es opcional.

108
00:06:45,320 --> 00:06:47,760
XML Next Paiz do punto th.

109
00:06:47,930 --> 00:06:54,080
Básicamente para colocar un nombre de despeus para que no haya conflicto nombre en los atributos de

110
00:06:54,080 --> 00:06:54,830
nuestra plantilla.

111
00:06:54,920 --> 00:06:56,300
Pero también es opcional.

112
00:06:56,420 --> 00:07:02,870
Si no lo colocamos podría mostrar en la plantilla un warning de advertencia que no conoce el atributo

113
00:07:02,870 --> 00:07:04,140
TH de Tayyip.

114
00:07:04,310 --> 00:07:08,690
Entonces por eso mejor indicar enespecial y la ruta de siempre.

115
00:07:10,280 --> 00:07:10,970
Punto Tayyip.

116
00:07:11,060 --> 00:07:11,990
Punto org.

117
00:07:14,050 --> 00:07:18,970
Lo siguiente cambiamos acá el chat, set o juego de caracteres a un Tf8.

118
00:07:20,230 --> 00:07:27,110
En el voy a tener un div que muestre el objeto, es decir, esto en realidad lo que estamos pasando

119
00:07:27,110 --> 00:07:27,680
a la vista.

120
00:07:28,250 --> 00:07:36,050
Este nombre parámetro objeto entonces como siempre bueno usando Tinduf TH que sería en especie text

121
00:07:36,110 --> 00:07:40,760
para imprimir un texto una variable, sino peso y las llaves.

122
00:07:40,910 --> 00:07:46,880
Bueno, básicamente la extrapolación de string para imprimir el valor que contiene el atributo o variable

123
00:07:46,910 --> 00:07:50,000
objeto que lo pasamos desde controlador a la vista.

124
00:07:50,150 --> 00:07:51,260
Guardamos y listo.

125
00:07:51,380 --> 00:07:52,130
Vamos a probar.

126
00:07:52,280 --> 00:07:53,090
Vamos a adelantar.

127
00:07:59,900 --> 00:08:02,030
Localhost 80 80 perfecto.

128
00:08:02,120 --> 00:08:06,680
Ejecutando un proceso importante se fijan acá muestra la información, el dato que obtenemos desde el

129
00:08:06,680 --> 00:08:09,590
service y lo pasamos a la vista por ahora de forma acoplada.

130
00:08:09,680 --> 00:08:14,750
Después la siguiente clase vamos a utilizar, vamos a modificar este código con inyección dependencia

131
00:08:14,840 --> 00:08:19,850
y recuerde que estamos en la raíz, pero el controlador también está mapeado a index.

132
00:08:21,130 --> 00:08:22,990
Entonces, con Índex muestra lo mismo.

133
00:08:23,500 --> 00:08:24,700
Por qué lo maquillamos de esa forma?

134
00:08:24,940 --> 00:08:26,920
Recuerden acá el controlador.

135
00:08:28,670 --> 00:08:29,240
Están las rutas.

136
00:08:29,580 --> 00:08:31,170
Bien, eso sería por ahora.

137
00:08:31,260 --> 00:08:33,030
Y continuamos la siguiente clase.
