1 00:00:00,110 --> 00:00:19,929 Y ojalá hubiera alguien que nos controlara los serlets y yo le dijera, oye, quiero que pase esto, que pase esto, que pase esto y que pase esto. Y ese tío ya decidiera crear los serlets, llamarlos, invocarlos, cargarlos, destruirlos. 2 00:00:19,929 --> 00:00:21,929 ojalá hubiera alguien que hiciera todo el trabajo 3 00:00:21,929 --> 00:00:23,829 por mí y yo le dijera, en esta ruta 4 00:00:23,829 --> 00:00:25,870 haz esto, en esta ruta haz esto, en esta ruta haz esto 5 00:00:25,870 --> 00:00:27,390 bueno, pues hay alguien 6 00:00:27,390 --> 00:00:29,510 que es una persona 7 00:00:29,510 --> 00:00:32,189 una persona que se llama 8 00:00:32,189 --> 00:00:32,929 controlador 9 00:00:32,929 --> 00:00:35,929 que es el que recibe 10 00:00:35,929 --> 00:00:37,429 ese llamado 11 00:00:37,429 --> 00:00:41,649 es una persona 12 00:00:41,649 --> 00:00:44,250 de bits 13 00:00:44,250 --> 00:00:45,570 ¿vale? 14 00:00:45,570 --> 00:00:47,329 que tampoco hay mucha diferencia 15 00:00:47,329 --> 00:00:49,429 entre una persona humana, realmente 16 00:00:49,429 --> 00:00:54,570 A ver, la diferencia con la persona humana 17 00:00:54,570 --> 00:00:55,750 Es que no cobra, efectivamente 18 00:00:55,750 --> 00:00:57,409 Que no es poco 19 00:00:57,409 --> 00:00:59,770 Pues este ser 20 00:00:59,770 --> 00:01:01,750 Maravilloso 21 00:01:01,750 --> 00:01:06,670 Es una clase que está hecha 22 00:01:06,670 --> 00:01:08,909 Integrada en esa capa de abstracción 23 00:01:08,909 --> 00:01:09,549 Que me pone 24 00:01:09,549 --> 00:01:11,549 A la que yo le digo 25 00:01:11,549 --> 00:01:14,269 Oye, estas rutas son las que te va a invocar 26 00:01:14,269 --> 00:01:16,730 Mi aplicación, te va a invocar todas estas 27 00:01:16,730 --> 00:01:18,849 En cada una de estas quiero que me hagas esto 28 00:01:18,849 --> 00:01:20,269 y me devuelvas esta vista 29 00:01:20,269 --> 00:01:22,189 pues este controller gestiona 30 00:01:22,189 --> 00:01:23,750 eso, ¿vale? 31 00:01:24,590 --> 00:01:25,989 entonces, dime 32 00:01:25,989 --> 00:01:28,129 ¿podemos hacer el controller más creando? 33 00:01:30,480 --> 00:01:31,420 sí, de alguna manera 34 00:01:31,420 --> 00:01:33,420 ¿podemos hacer eso con el controller más creando? 35 00:01:33,799 --> 00:01:34,359 no 36 00:01:34,359 --> 00:01:37,159 claro, ese es el tema 37 00:01:37,159 --> 00:01:40,159 que desde el momento en que empezamos a poner capas de abstracción 38 00:01:40,159 --> 00:01:41,579 perdemos el control 39 00:01:41,579 --> 00:01:43,599 pero bueno, ¿es grave? 40 00:01:43,599 --> 00:01:44,939 pues no es grave 41 00:01:44,939 --> 00:01:47,939 se supone que nosotros 42 00:01:47,939 --> 00:01:49,560 le mandamos 43 00:01:49,560 --> 00:01:51,280 y él va a hacer lo que le mandemos 44 00:01:51,280 --> 00:01:52,879 ¿vale? lo que pasa 45 00:01:52,879 --> 00:01:54,780 sí hombre, él va a hacer lo que le mandemos 46 00:01:54,780 --> 00:01:57,180 lo que pasa es que le tenemos que ordenar bien 47 00:01:57,180 --> 00:01:59,540 y configurar bien, claro, si le ordenamos 48 00:01:59,540 --> 00:02:01,180 bien y le configuramos bien, él va a hacer 49 00:02:01,180 --> 00:02:02,219 lo que nosotros queremos 50 00:02:02,219 --> 00:02:05,200 lo que pasa es que bueno, que ya la cosa empieza como a 51 00:02:05,200 --> 00:02:07,340 volverse más esotérica 52 00:02:07,340 --> 00:02:09,479 ¿vale? a mí me gusta 53 00:02:09,479 --> 00:02:11,199 normalmente pues trabajar con las cosas 54 00:02:11,199 --> 00:02:13,300 desde la base, pero es que llega un momento en que es imposible 55 00:02:13,300 --> 00:02:15,240 porque todo se hace demasiado 56 00:02:15,240 --> 00:02:17,120 complejo, entonces bueno 57 00:02:17,120 --> 00:02:19,740 Dime, dime, vas a decir algo 58 00:02:19,740 --> 00:02:29,960 Por ejemplo, sí 59 00:02:29,960 --> 00:02:33,479 Hay un arsenal de cosas que te pueden pasar 60 00:02:33,479 --> 00:02:38,819 Que ya no sabes exactamente por qué son 61 00:02:38,819 --> 00:02:39,659 ¿Vale? 62 00:02:39,680 --> 00:02:42,840 Porque están relacionadas con su propio funcionamiento interno 63 00:02:42,840 --> 00:02:44,400 Pero bueno, que es una cuestión de 64 00:02:44,400 --> 00:02:46,939 Pues tú vas aprendiendo a usar esta herramienta 65 00:02:46,939 --> 00:02:48,699 Y vas más o menos, pues al final 66 00:02:48,699 --> 00:02:50,319 Uno la sabe usar y la usa 67 00:02:50,319 --> 00:03:12,099 Y ya está. Entonces, este controlador entra dentro de un concepto que de nuevo es otro patrón de diseño más. Recordad lo que hablábamos de patrones de diseño. Patrón de diseño es una forma de diseñar aplicaciones. ¿Vale? ¿Qué patrones de diseño hemos mencionado? 68 00:03:12,099 --> 00:03:14,580 el patrón de diseño singleton 69 00:03:14,580 --> 00:03:16,460 que es, si tú vas a usar 70 00:03:16,460 --> 00:03:18,300 un objeto en un montón de sitios 71 00:03:18,300 --> 00:03:20,759 haz algo para no instanciarlo 72 00:03:20,759 --> 00:03:23,020 por duplicado, triplicado, cuadriplicado 73 00:03:23,020 --> 00:03:24,539 que solo hay una instancia, muy bien 74 00:03:24,539 --> 00:03:26,180 el patrón DAO 75 00:03:26,180 --> 00:03:28,840 que es, si tú tienes 76 00:03:28,840 --> 00:03:29,780 en la base de datos 77 00:03:29,780 --> 00:03:32,780 tus entidades que se corresponden 78 00:03:32,780 --> 00:03:34,759 con tus clases 79 00:03:34,759 --> 00:03:36,659 de la aplicación 80 00:03:36,659 --> 00:03:38,039 pues hombre 81 00:03:38,039 --> 00:03:40,280 haz algo de alguna manera 82 00:03:40,280 --> 00:03:42,259 que te abstraiga y que tú puedas decir 83 00:03:42,259 --> 00:03:43,840 guarda objeto, lee objeto 84 00:03:43,840 --> 00:03:45,560 y olvídate de la tabla 85 00:03:45,560 --> 00:03:48,219 y trabaja directamente 86 00:03:48,219 --> 00:03:49,979 con una clase 87 00:03:49,979 --> 00:03:52,000 que te ofrezca ya métodos para 88 00:03:52,000 --> 00:03:53,620 guardar objeto, leer objeto y ya está 89 00:03:53,620 --> 00:03:54,900 entonces esa clase DAO 90 00:03:54,900 --> 00:03:58,360 te ofrece a ti 91 00:03:58,360 --> 00:04:00,180 los métodos para guardar 92 00:04:00,180 --> 00:04:02,259 leer objetos y tú te despreocupas 93 00:04:02,259 --> 00:04:03,300 de la tabla, ¿vale? 94 00:04:03,680 --> 00:04:06,139 Bueno, pues hay otro patrón relacionado 95 00:04:06,139 --> 00:04:08,219 este ya con aplicaciones 96 00:04:08,219 --> 00:04:08,599 web 97 00:04:08,599 --> 00:04:12,120 que es el patrón 98 00:04:12,120 --> 00:04:13,259 modelo vista 99 00:04:13,259 --> 00:04:14,759 controlador 100 00:04:14,759 --> 00:04:18,199 entonces 101 00:04:18,199 --> 00:04:21,560 este objeto controller 102 00:04:21,560 --> 00:04:23,639 entra dentro de este patrón 103 00:04:23,639 --> 00:04:25,540 modelo vista 104 00:04:25,540 --> 00:04:27,560 controlador ¿vale? ¿por qué me está 105 00:04:27,560 --> 00:04:29,279 sonando tan mal? porque 106 00:04:29,279 --> 00:04:35,579 a ver porque lo he puesto 107 00:04:35,579 --> 00:04:36,639 en español pero 108 00:04:36,639 --> 00:04:39,759 Pero su nombre habitual 109 00:04:39,759 --> 00:04:40,899 Debe aparecer en inglés 110 00:04:40,899 --> 00:04:42,839 Porque de repente lo he escrito y me suena muy raro 111 00:04:42,839 --> 00:04:47,060 No, en inglés también es así, ¿verdad? 112 00:04:48,139 --> 00:04:49,079 Sí, es así 113 00:04:49,079 --> 00:04:50,459 Entonces es que de repente lo he visto 114 00:04:50,459 --> 00:04:52,500 Y como que me han sonado las letras descolocadas 115 00:04:52,500 --> 00:04:55,500 Pero bueno, da igual, será que ya he llevado muchas horas aquí 116 00:04:55,500 --> 00:04:59,639 Claro, repite y después 117 00:04:59,639 --> 00:05:02,839 Siempre la hemos escrito MVC 118 00:05:02,839 --> 00:05:03,699 Vale 119 00:05:03,699 --> 00:05:06,819 Pues el patrón modelo vista controlador 120 00:05:06,819 --> 00:05:08,139 Dice, a ver 121 00:05:08,139 --> 00:05:10,399 Vamos a darle toda la complejidad 122 00:05:10,399 --> 00:05:12,519 De decidir qué haces 123 00:05:12,519 --> 00:05:13,579 Al controlador 124 00:05:13,579 --> 00:05:16,000 Entonces el modelo vista controlador se basa en 125 00:05:16,000 --> 00:05:17,800 Tú tienes este controller aquí 126 00:05:17,800 --> 00:05:21,100 Y luego tienes la vista 127 00:05:21,100 --> 00:05:22,920 Que sería 128 00:05:22,920 --> 00:05:25,399 Lo que ve el usuario en su navegador 129 00:05:25,399 --> 00:05:26,439 Esa es la vista 130 00:05:26,439 --> 00:05:28,759 Entonces, la vista 131 00:05:28,759 --> 00:05:30,980 Lógicamente 132 00:05:30,980 --> 00:05:33,000 Despierta al controlador 133 00:05:33,000 --> 00:05:34,779 Y el controlador decide 134 00:05:34,779 --> 00:05:38,240 a qué se le invoca, qué hace, cómo lo hace 135 00:05:38,240 --> 00:05:40,480 y el controlador, pues lógicamente 136 00:05:40,480 --> 00:05:44,439 tocará el modelo de datos que está ahí 137 00:05:44,439 --> 00:05:49,180 hará cosas con la lógica de negocio 138 00:05:49,180 --> 00:05:50,519 con los datos, lo retocarán 139 00:05:50,519 --> 00:05:54,100 y generará a su vez una nueva vista 140 00:05:54,100 --> 00:05:55,019 ¿vale? 141 00:05:55,639 --> 00:05:58,259 eso es muy en resumen el modelo vista controlador 142 00:05:58,259 --> 00:06:02,079 un elemento controlador que centraliza 143 00:06:02,079 --> 00:06:04,839 centraliza las peticiones 144 00:06:04,839 --> 00:06:06,019 que llegan de la vista 145 00:06:06,019 --> 00:06:08,199 y ahí ya llama 146 00:06:08,199 --> 00:06:10,339 quien tenga que llamar, recoloca 147 00:06:10,339 --> 00:06:12,000 los datos 148 00:06:12,000 --> 00:06:13,699 y genera 149 00:06:13,699 --> 00:06:15,319 las nuevas vistas 150 00:06:15,319 --> 00:06:17,740 o despacha 151 00:06:17,740 --> 00:06:19,639 o como lo queramos llamar, las nuevas vistas 152 00:06:19,639 --> 00:06:22,259 vale, pues bueno 153 00:06:22,259 --> 00:06:27,420 ¿qué framework 154 00:06:27,420 --> 00:06:30,699 se ha puesto de moda para integrar 155 00:06:30,699 --> 00:06:33,040 este patrón de diseño en las aplicaciones 156 00:06:33,040 --> 00:06:34,000 de Java? 157 00:06:36,519 --> 00:06:38,279 Pues este, ¿vale? 158 00:06:40,339 --> 00:06:41,100 Entonces, 159 00:06:41,980 --> 00:06:42,920 Spring lo que pasa 160 00:06:42,920 --> 00:06:44,600 es que es un ecosistema 161 00:06:44,600 --> 00:06:47,100 gigantesco de millones 162 00:06:47,100 --> 00:06:48,879 de millones o miles 163 00:06:48,879 --> 00:06:51,339 de subframeworks 164 00:06:51,339 --> 00:06:52,939 pequeñitos, para hacer 165 00:06:52,939 --> 00:06:54,879 cosas muy distintas, muy 166 00:06:54,879 --> 00:06:55,939 diferentes, ¿vale? 167 00:06:56,720 --> 00:06:58,980 Entonces, como ya se ha hecho tan, tan, 168 00:06:58,980 --> 00:07:00,560 tan enormemente grande 169 00:07:00,560 --> 00:07:03,740 llegó un momento en que eso ya era imposible 170 00:07:03,740 --> 00:07:04,500 de gestionar 171 00:07:04,500 --> 00:07:07,259 entonces hubo que hacer un framework para gestionar 172 00:07:07,259 --> 00:07:09,139 al framework, porque ya 173 00:07:09,139 --> 00:07:10,319 era imposible 174 00:07:10,319 --> 00:07:12,519 entonces, ¿qué framework 175 00:07:12,519 --> 00:07:15,420 se ha hecho para tratar 176 00:07:15,420 --> 00:07:17,740 de ocultar 177 00:07:17,740 --> 00:07:19,459 la complejidad que tiene esto? 178 00:07:20,100 --> 00:07:20,839 pues Spring Boot 179 00:07:20,839 --> 00:07:25,550 entonces el famoso 180 00:07:25,550 --> 00:07:27,850 Spring Boot es una capita 181 00:07:27,850 --> 00:07:29,389 un poquito más simple 182 00:07:29,389 --> 00:07:31,870 afortunadamente, que él se lo guisa, se lo come 183 00:07:31,870 --> 00:07:33,990 es que no hay que hacer nada, así es que lo hace todo 184 00:07:33,990 --> 00:07:35,709 y esa capita 185 00:07:35,709 --> 00:07:38,129 pues ya nos 186 00:07:38,129 --> 00:07:39,970 oculta las complejidades de Spring 187 00:07:39,970 --> 00:07:41,870 y luego de Spring a su vez 188 00:07:41,870 --> 00:07:43,730 uno puede decidir qué quiere usar 189 00:07:43,730 --> 00:07:45,850 Spring Boot es, arráncame Spring 190 00:07:45,850 --> 00:07:48,250 porque es que yo soy incapaz, porque si lo arranco por mí 191 00:07:48,250 --> 00:07:50,310 tengo que configurar millones de cosas 192 00:07:50,310 --> 00:07:51,550 entonces, arráncamelo 193 00:07:51,550 --> 00:07:54,110 Spring Boot, arranca Spring que yo si no me cago 194 00:07:54,110 --> 00:07:58,189 y ahora sí me cago, pero bueno 195 00:07:58,189 --> 00:07:59,990 Spring Boot sea un framework 196 00:07:59,990 --> 00:08:01,329 para controlar un framework 197 00:08:01,329 --> 00:08:03,709 para arrancarlo y instanciar 198 00:08:03,709 --> 00:08:05,430 todas las dependencias que necesite 199 00:08:05,430 --> 00:08:07,269 un poco para eso 200 00:08:07,269 --> 00:08:13,240 no, porque 201 00:08:13,240 --> 00:08:15,459 como ellos entre sí se entienden y lo hacen todo 202 00:08:15,459 --> 00:08:17,500 para el que 203 00:08:17,500 --> 00:08:19,360 lo usa, se convierte en algo muy 204 00:08:19,360 --> 00:08:21,240 sencillo, bueno, hasta que empiezan a llegar 205 00:08:21,240 --> 00:08:23,100 nuevas errores 206 00:08:23,100 --> 00:08:24,759 o cosas que tienes que incorporar 207 00:08:24,759 --> 00:08:27,240 y no te casan, pero luego 208 00:08:27,240 --> 00:08:29,199 realmente sin Spring Boot, Spring 209 00:08:29,199 --> 00:08:30,019 era infumable 210 00:08:30,019 --> 00:08:33,039 entonces menos mal que llegó Spring Boot 211 00:08:33,039 --> 00:08:34,480 y empezamos a poder fumarlo 212 00:08:34,480 --> 00:08:37,980 No, yo lo digo desde fuera 213 00:08:37,980 --> 00:08:40,259 Porque yo conozco poquísimo de este framework 214 00:08:40,259 --> 00:08:42,480 Porque no lo he necesitado 215 00:08:42,480 --> 00:08:44,059 Ni he tenido que impartirlo ni nada 216 00:08:44,059 --> 00:08:46,220 Pero bueno, son mis impresiones 217 00:08:46,220 --> 00:08:47,220 ¿Vale? 218 00:08:47,539 --> 00:08:50,759 Entonces, Spring, repito, tiene a su vez millones de subframeworks 219 00:08:50,759 --> 00:08:51,740 Para hacer millones de cosas 220 00:08:51,740 --> 00:08:54,320 A nosotros nos va a interesar uno en particular 221 00:08:54,320 --> 00:08:57,220 Nos va a interesar un subframework 222 00:08:57,220 --> 00:08:58,659 Que es el Spring Data 223 00:08:58,659 --> 00:09:01,029 ¿Vale? 224 00:09:01,149 --> 00:09:02,350 Este sí nos va a interesar 225 00:09:02,350 --> 00:09:04,529 Porque eso sí que sí, nuestro módulo sí es 226 00:09:04,529 --> 00:09:06,850 Acceso a datos, facilitar 227 00:09:06,850 --> 00:09:08,029 El acceso a datos 228 00:09:08,029 --> 00:09:10,590 Sí 229 00:09:10,590 --> 00:09:12,970 Pero es que tenéis que saber de esto 230 00:09:12,970 --> 00:09:13,669 Porque 231 00:09:13,669 --> 00:09:17,210 Vale, entonces a nosotros nos va a interesar 232 00:09:17,210 --> 00:09:19,049 Spring Data que también lo podremos 233 00:09:19,049 --> 00:09:20,850 Arrancar desde Spring Boot y todo eso 234 00:09:20,850 --> 00:09:23,029 Pero bueno 235 00:09:23,029 --> 00:09:24,750 En Spring hay de todo, como tú 236 00:09:24,750 --> 00:09:26,149 Sabrás seguramente 237 00:09:26,149 --> 00:09:29,350 De todo, vale, para programar 238 00:09:29,350 --> 00:09:31,590 Aplicaciones de todo tipo 239 00:09:31,590 --> 00:09:33,029 Con todos los parámetros 240 00:09:33,029 --> 00:09:34,750 reactivas, no reactivas, de todo 241 00:09:34,750 --> 00:09:40,330 pero es verdad que antes era 242 00:09:40,330 --> 00:09:41,090 un horror 243 00:09:41,090 --> 00:09:44,750 y la intuición era, esto no va a llegar a ningún lado 244 00:09:44,750 --> 00:09:46,610 porque es un horror, pero claro tuvieron 245 00:09:46,610 --> 00:09:47,909 la feliz idea de esto 246 00:09:47,909 --> 00:09:50,590 y esos horribles ficheros de configuración 247 00:09:50,590 --> 00:09:52,049 de bins, de no sé qué 248 00:09:52,049 --> 00:09:54,870 de inyección, toda la inyección de dependencia 249 00:09:54,870 --> 00:09:55,909 de repente desapareció 250 00:09:55,909 --> 00:10:02,389 a ver, desde luego ahora mismo 251 00:10:02,389 --> 00:10:03,990 no hay 252 00:10:03,990 --> 00:10:06,350 desarrolladores de Java, entiendo, 253 00:10:06,730 --> 00:10:08,269 salvo para cosas muy específicas 254 00:10:08,269 --> 00:10:10,649 que no lo hagan con Spring, creo. Es la sensación 255 00:10:10,649 --> 00:10:11,210 que tengo yo. 256 00:10:12,190 --> 00:10:14,070 Luego otra cosa es que cada empresa 257 00:10:14,070 --> 00:10:16,610 tiene a su vez sus propios frameworks. 258 00:10:16,990 --> 00:10:18,429 Sus propios frameworks, muchos de ellos 259 00:10:18,429 --> 00:10:20,549 inspirados en Spring, a veces, para hacer sus 260 00:10:20,549 --> 00:10:22,549 cosas. Pero bueno, 261 00:10:22,610 --> 00:10:24,549 esto de alguna manera es muy universal. Bueno, conclusión 262 00:10:24,549 --> 00:10:26,289 después de este rollo. Pues esta 263 00:10:26,289 --> 00:10:28,409 mimita aplicación la vamos a hacer 264 00:10:28,409 --> 00:10:30,649 con Spring ahora. A ver si nos resulta 265 00:10:30,649 --> 00:10:31,789 más fácil o más difícil. 266 00:10:32,509 --> 00:10:33,049 Vamos a ver. 267 00:10:33,990 --> 00:10:36,230 A mí me gusta menos, pero porque 268 00:10:36,230 --> 00:10:37,509 yo soy de la generación 269 00:10:37,509 --> 00:10:39,649 la que me gustaba hacer las flores a mano. 270 00:10:40,649 --> 00:10:42,309 Pero, sí, 271 00:10:42,490 --> 00:10:43,129 puede ser el baño. 272 00:10:44,809 --> 00:10:45,250 Entonces, 273 00:10:45,590 --> 00:10:47,269 para hacerla con Spring, 274 00:10:47,970 --> 00:10:50,389 en lugar de con el Eclipse normal que podríamos, 275 00:10:51,529 --> 00:10:52,210 vamos a coger 276 00:10:52,210 --> 00:10:53,950 el Eclipse tuneado para Spring, 277 00:10:53,950 --> 00:10:55,289 porque nos facilita un montón 278 00:10:55,289 --> 00:10:57,230 la creación de escrituras. 279 00:10:57,830 --> 00:10:59,009 Sí, entonces tenemos 280 00:10:59,009 --> 00:11:01,850 o cualquiera en el entorno 281 00:11:01,850 --> 00:11:03,629 del Intel IE también tiene integrado 282 00:11:03,629 --> 00:11:05,490 las herramientas porque te generan 283 00:11:05,490 --> 00:11:07,190 las clases de Sprint 284 00:11:07,190 --> 00:11:09,649 pero como nosotros somos adictos 285 00:11:09,649 --> 00:11:10,090 a Eclipse 286 00:11:10,090 --> 00:11:13,629 ya sí, pero ya no va a haber más 287 00:11:13,629 --> 00:11:14,450 Eclipse 288 00:11:14,450 --> 00:11:17,389 ya no va a haber más por lo menos en una semana 289 00:11:17,389 --> 00:11:18,809 no, no, no, ya no va a haber más 290 00:11:18,809 --> 00:11:22,090 los únicos que vamos a manejar durante el curso son estos tres 291 00:11:22,090 --> 00:11:23,470 vale, pues el Eclipse 292 00:11:23,470 --> 00:11:25,870 tuneado para facilitar 293 00:11:25,870 --> 00:11:27,629 el desarrollo de aplicaciones Sprint 294 00:11:27,629 --> 00:11:30,210 es el Sprint Tool Suite 295 00:11:30,210 --> 00:11:32,490 entonces 296 00:11:32,490 --> 00:11:35,049 Entonces, ¿descargarlo? 297 00:11:40,509 --> 00:11:52,559 Vamos a ver, yo lo tengo descargado, pero si tuviera que descargarlo otra vez, pues me iría a aquí. 298 00:11:52,559 --> 00:11:57,519 A ver, me iría 299 00:11:57,519 --> 00:12:00,360 Sprint 300 00:12:00,360 --> 00:12:01,399 Tools 301 00:12:01,399 --> 00:12:02,419 Suite 302 00:12:02,419 --> 00:12:04,820 Tools Sprint 303 00:12:04,820 --> 00:12:07,759 Sprint Tools 304 00:12:07,759 --> 00:12:09,580 Sprint Tools 305 00:12:09,580 --> 00:12:11,840 Pues este 306 00:12:11,840 --> 00:12:13,440 Ala, os descargáis 307 00:12:13,440 --> 00:12:14,320 Ese de ahí 308 00:12:14,320 --> 00:12:15,500 ¿Vale? 309 00:12:22,580 --> 00:12:23,799 ¿Cómo que queda una hora? 310 00:12:24,779 --> 00:12:26,740 Pues entonces no, os paso el zip 311 00:12:26,740 --> 00:12:28,259 Y lo copiáis 312 00:12:28,259 --> 00:12:30,000 A ver, el que tengo yo es de hace unos meses 313 00:12:30,000 --> 00:12:31,500 Pero tampoco creo que haya cambiado mucho 314 00:12:31,500 --> 00:12:32,799 Eh 315 00:12:32,799 --> 00:12:36,200 Sí, no os pongáis a descargarlo todos 316 00:12:36,200 --> 00:12:37,340 A ver 317 00:12:37,340 --> 00:12:39,019 Bueno, alguien le dice por ahí que cinco minutos 318 00:12:39,019 --> 00:12:40,159 Pero tú estás con la de tu móvil 319 00:12:40,159 --> 00:12:42,500 Igual, la conexión de tu móvil 320 00:12:42,500 --> 00:12:45,399 Y ese te ha descargado 321 00:12:45,399 --> 00:12:46,379 Ah 322 00:12:46,379 --> 00:12:48,700 Pues 323 00:12:48,700 --> 00:12:53,659 Acabáramos 324 00:12:53,659 --> 00:12:54,940 No debería tardar tanto 325 00:12:54,940 --> 00:12:56,480 Entonces 326 00:12:56,480 --> 00:12:58,840 será un zip 327 00:12:58,840 --> 00:13:02,000 y ese zip lo descomprimís 328 00:13:02,000 --> 00:13:02,820 y punto pelota 329 00:13:02,820 --> 00:13:05,700 y cuando descomprimáis el zip 330 00:13:05,700 --> 00:13:07,220 pues ya tenéis aquí 331 00:13:07,220 --> 00:13:08,820 el 332 00:13:08,820 --> 00:13:11,820 el punto de arranque 333 00:13:11,820 --> 00:13:13,519 le hacéis un acceso directo 334 00:13:13,519 --> 00:13:14,940 si os da la gana y ya está, ¿vale? 335 00:13:15,580 --> 00:13:17,919 una vez descargado es un zip que descomprimís 336 00:13:17,919 --> 00:13:21,379 descomprimís 337 00:13:21,379 --> 00:13:23,600 arrancáis 338 00:13:23,600 --> 00:13:27,019 y nos sale esta cosa 339 00:13:27,019 --> 00:13:44,110 venga, a ver 340 00:13:44,110 --> 00:13:47,590 bueno, pues vamos a hacer 341 00:13:47,590 --> 00:13:49,190 una aplicación 342 00:13:49,190 --> 00:13:52,090 web 343 00:13:52,090 --> 00:13:54,169 con la arquitectura de Spring 344 00:13:54,169 --> 00:13:58,429 bueno, a ver, podríamos 345 00:13:58,429 --> 00:13:59,909 porque quiero que sea igual 346 00:13:59,909 --> 00:14:01,129 es que no web 347 00:14:01,129 --> 00:14:02,490 es la de toda la vida 348 00:14:02,490 --> 00:14:02,970 es una 349 00:14:02,970 --> 00:14:05,690 y ya está, y la podríamos también 350 00:14:05,690 --> 00:14:08,269 pero bueno, quizá haya expresado por qué tanto 351 00:14:08,269 --> 00:14:09,529 ahora en particular 352 00:14:09,529 --> 00:14:11,450 porque quiero hacer de la misma 353 00:14:11,450 --> 00:14:14,169 que hemos hecho antes de la misma pero con esta arquitectura 354 00:14:14,169 --> 00:14:16,509 pero una normal 355 00:14:16,509 --> 00:14:17,929 que no sea coordinada con el print 356 00:14:17,929 --> 00:14:18,990 pues da igual 357 00:14:18,990 --> 00:14:21,169 vamos a hacer lo mismo 358 00:14:21,169 --> 00:14:22,509 pero con el print 359 00:14:22,509 --> 00:14:25,350 claro, vamos a hacer lo mismo 360 00:14:25,350 --> 00:14:27,029 pero con el print 361 00:14:27,029 --> 00:14:28,570 poniendo esa caja por encima 362 00:14:28,570 --> 00:14:30,110 ¿eh? 363 00:14:31,750 --> 00:14:33,269 hombre, y tal vez de cero 364 00:14:33,269 --> 00:14:47,090 vamos a ver, tú te tienes que ir de aquí 365 00:14:47,090 --> 00:14:48,190 siendo 366 00:14:48,190 --> 00:14:49,909 el mejor 367 00:14:49,909 --> 00:14:52,850 entonces, cuanto más cosas sepas 368 00:14:52,850 --> 00:14:53,570 mejor 369 00:14:53,570 --> 00:14:55,730 claro 370 00:14:55,730 --> 00:15:00,769 bueno, pues afianzarlas 371 00:15:00,769 --> 00:15:01,590 en casa 372 00:15:01,590 --> 00:15:09,029 Venga, a ver 373 00:15:09,029 --> 00:15:11,450 A ver, que nos vamos a ir en 5 minutos 374 00:15:11,450 --> 00:15:13,830 Vamos por lo menos a dejar arrancado 375 00:15:13,830 --> 00:15:14,970 El proyecto 376 00:15:14,970 --> 00:15:16,809 Que nos vamos a ir en 5 minutos 377 00:15:16,809 --> 00:15:17,870 Vale, a ver 378 00:15:17,870 --> 00:15:21,870 Nuestro primer proyecto 379 00:15:21,870 --> 00:15:22,690 New 380 00:15:22,690 --> 00:15:25,529 ¿Qué queremos arrancar? 381 00:15:27,429 --> 00:15:29,509 Quiero arrancar con un proyecto 382 00:15:29,509 --> 00:15:30,049 Sprint 383 00:15:30,049 --> 00:15:33,090 Venga, me dais aquí 384 00:15:33,090 --> 00:15:34,610 Ostras 385 00:15:34,610 --> 00:15:36,750 Quiero arrancar con un proyecto Sprint 386 00:15:36,750 --> 00:15:37,610 Sprint, vale 387 00:15:37,610 --> 00:15:40,690 ¿Esto qué hace en realidad? 388 00:15:41,769 --> 00:15:42,490 Esto 389 00:15:42,490 --> 00:15:44,909 Está invocando a la página 390 00:15:44,909 --> 00:15:46,889 Java.io, que como Sprint 391 00:15:46,889 --> 00:15:48,889 Sabe que complica tanto 392 00:15:48,889 --> 00:15:51,009 La vida, te ofrece una web 393 00:15:51,009 --> 00:15:53,269 En la que tú le dices 394 00:15:53,269 --> 00:15:54,870 El tipo de aplicación 395 00:15:54,870 --> 00:15:55,789 Que quieres hacer 396 00:15:55,789 --> 00:15:59,210 Las dependencias que vas a necesitar 397 00:15:59,210 --> 00:16:02,049 el gestor de tareas que quieres 398 00:16:02,049 --> 00:16:03,690 en esta web 399 00:16:03,690 --> 00:16:05,769 tú puedes ir, le metes eso 400 00:16:05,769 --> 00:16:07,690 y él te genera el proyecto 401 00:16:07,690 --> 00:16:09,610 en un zip y te permite descargarlo 402 00:16:09,610 --> 00:16:11,769 porque como sabe que es tan lioso 403 00:16:11,769 --> 00:16:14,230 dice, venga, yo te lo hago, te lo meto en un zip y te descargo 404 00:16:14,230 --> 00:16:15,830 Eclipse 405 00:16:15,830 --> 00:16:17,990 Splintools, lo que hace 406 00:16:17,990 --> 00:16:19,750 es hacer por ti 407 00:16:19,750 --> 00:16:21,730 la llamada a ese sitio web, nada más 408 00:16:21,730 --> 00:16:23,769 hacerla por ti, es lo único que hace 409 00:16:23,769 --> 00:16:25,389 vale, Pablo 410 00:16:25,389 --> 00:16:27,509 pero vamos a darle nuestros datos 411 00:16:27,509 --> 00:16:29,750 Venga, ¿cómo queremos que se haga nuestra aplicación? 412 00:16:29,909 --> 00:16:31,129 Llamadle como os dé la gana 413 00:16:31,129 --> 00:16:32,669 A ver, yo le voy a 414 00:16:32,669 --> 00:16:36,490 Mxml to JSON 415 00:16:36,490 --> 00:16:38,029 Clase, para distinguirla 416 00:16:38,029 --> 00:16:38,950 De la otra que tengo 417 00:16:38,950 --> 00:16:41,610 Vale, llamadla como queráis 418 00:16:41,610 --> 00:16:43,830 Venga, ¿qué gestor 419 00:16:43,830 --> 00:16:46,490 De tareas, de automatizar 420 00:16:46,490 --> 00:16:47,269 Tareas quieres? 421 00:16:47,929 --> 00:16:50,090 Pues quiero Maven, porque me gusta 422 00:16:50,090 --> 00:16:50,909 Es el que conozco 423 00:16:50,909 --> 00:16:53,210 ¿En qué vas a empaquetar la aplicación? 424 00:16:53,309 --> 00:16:55,529 En nuestro caso, como va a ser web, en un war 425 00:16:55,529 --> 00:16:56,929 Si no, sería un jar 426 00:16:56,929 --> 00:16:58,809 Todavía no hemos empaquetado war 427 00:16:58,809 --> 00:16:59,570 Pero bueno, nos da igual 428 00:16:59,570 --> 00:17:02,049 ¿Qué versión queréis? Pues la que tengáis 429 00:17:02,049 --> 00:17:04,809 Siempre y cuando sea mayor de 17 430 00:17:04,809 --> 00:17:07,190 Porque si no es mayor de 17 431 00:17:07,190 --> 00:17:08,289 No nos entendemos 432 00:17:08,289 --> 00:17:10,730 Con Spring Boot y las versiones estas 433 00:17:10,730 --> 00:17:11,170 ¿Vale? 434 00:17:12,789 --> 00:17:14,829 Yo 21 porque la 25 no la tengo 435 00:17:14,829 --> 00:17:15,309 Dime 436 00:17:15,309 --> 00:17:19,299 ¿Cómo? 437 00:17:23,059 --> 00:17:24,519 No, me lo da en bebido igual 438 00:17:24,519 --> 00:17:25,460 El Spring Tool 439 00:17:25,460 --> 00:17:26,599 Si no hace falta que 440 00:17:26,599 --> 00:17:28,799 A ver 441 00:17:28,799 --> 00:17:31,539 embebido es 442 00:17:31,539 --> 00:17:33,539 a ver 443 00:17:33,539 --> 00:17:35,099 embebido es una aplicación 444 00:17:35,099 --> 00:17:37,339 una aplicación a veces 445 00:17:37,339 --> 00:17:38,900 necesita recursos, como por ejemplo 446 00:17:38,900 --> 00:17:40,660 una base de datos, un servidor 447 00:17:40,660 --> 00:17:43,380 ¿vale? entonces, cuando tú pruebas 448 00:17:43,380 --> 00:17:45,799 una aplicación, si esa aplicación 449 00:17:45,799 --> 00:17:47,779 necesita esos recursos, como una base de datos 450 00:17:47,779 --> 00:17:49,140 un servidor, tienes una opción 451 00:17:49,140 --> 00:17:51,500 que es tirar de una base de datos externa 452 00:17:51,500 --> 00:17:53,220 para hacer tus pruebas, un servidor externo 453 00:17:53,220 --> 00:17:55,339 pero en fase de desarrollo 454 00:17:55,339 --> 00:17:57,240 puedes meterte 455 00:17:57,240 --> 00:17:59,039 esos recursos embebidos que se llaman, 456 00:17:59,119 --> 00:18:01,279 que es en mi propia aplicación, en mi propio 457 00:18:01,279 --> 00:18:02,500 JAR, en mi propia aplicación, 458 00:18:03,059 --> 00:18:05,279 me meto una base de datos embebida que solo vive 459 00:18:05,279 --> 00:18:06,980 cuando vive la aplicación, luego desaparece. 460 00:18:07,339 --> 00:18:09,380 Me meto un servidor de aplicaciones que solo vive 461 00:18:09,380 --> 00:18:11,160 cuando vive la aplicación, luego desaparece. 462 00:18:11,880 --> 00:18:13,380 Entonces, eso me viene muy bien 463 00:18:13,380 --> 00:18:14,619 en tiempo de desarrollo, lógicamente. 464 00:18:15,259 --> 00:18:17,299 Vale, pues, el Spring Tools 465 00:18:17,299 --> 00:18:19,259 ya por defecto te mete un Tomcat 466 00:18:19,259 --> 00:18:21,220 en la aplicación, aunque tú la 467 00:18:21,220 --> 00:18:22,960 pongas aquí al igual. 468 00:18:23,099 --> 00:18:25,140 Entonces, no necesitaríamos ni el Tomcat que hemos hecho en el equipo 469 00:18:25,140 --> 00:18:27,099 ni nada. Podríamos usar el Tomcat 470 00:18:27,099 --> 00:18:29,400 externo, pero él ya te embebe 471 00:18:29,400 --> 00:18:31,480 uno para que cuando tú haces las pruebas, tira de él. 472 00:18:32,200 --> 00:18:32,599 ¿Vale? 473 00:18:33,119 --> 00:18:33,519 Sí. 474 00:18:35,519 --> 00:18:39,359 A ver, sí, bueno, yo es que estoy 475 00:18:39,359 --> 00:18:41,099 poniendo la raíz que pongo siempre 476 00:18:41,099 --> 00:18:43,059 con DANDOS 477 00:18:43,059 --> 00:18:47,240 y aquí, pues, 478 00:18:47,299 --> 00:18:49,599 la ruta raíz para tu aplicación. 479 00:18:49,859 --> 00:18:51,339 Pues, que no sea directamente con DANDOS 480 00:18:51,339 --> 00:18:53,500 que es feo, pues, venga, aplicación web, ya está. 481 00:18:53,500 --> 00:18:56,619 le damos estos datos 482 00:18:56,619 --> 00:18:58,579 tiene más cositas abajo 483 00:18:58,579 --> 00:19:00,660 no, venga 484 00:19:00,660 --> 00:19:02,599 bueno, ya tenemos esto 485 00:19:02,599 --> 00:19:04,019 seleccionado, next 486 00:19:04,019 --> 00:19:05,799 vale, a ver 487 00:19:05,799 --> 00:19:08,160 a vosotros no os aparecerá esto 488 00:19:08,160 --> 00:19:10,380 porque esta es la página 489 00:19:10,380 --> 00:19:11,720 de dependencias, ¿qué es? 490 00:19:13,039 --> 00:19:14,539 ¿qué dependencias necesitas? 491 00:19:14,720 --> 00:19:15,420 bueno, aquí hay 492 00:19:15,420 --> 00:19:18,059 claro, es tiempo de dependencias 493 00:19:18,059 --> 00:19:20,440 tú buscas las que quieres, ¿vale? 494 00:19:21,200 --> 00:19:21,759 entonces 495 00:19:21,759 --> 00:19:34,500 Yo en mi caso, como esto va a ser una aplicación web, si no ni siquiera, como va a ser una aplicación web, necesito la parte de sprint que tiene la parte web. 496 00:19:35,619 --> 00:19:40,500 Entonces, vamos a buscarla aquí en todo este chorizo, vamos a buscarla. 497 00:19:42,359 --> 00:19:44,000 Aquí, pues en web está. 498 00:19:44,819 --> 00:19:45,440 En web. 499 00:19:47,319 --> 00:19:49,240 ¿Veis? Aquí está, la marcáis. 500 00:19:51,039 --> 00:19:51,519 ¿Vale? 501 00:19:51,519 --> 00:20:14,529 Yo quiero esta parte, la parte de, estas son las dependencias, vale, y por ahora vamos a ponerle solo esto, esto nos va a permitir usar el controller, todo, es decir, todo lo relacionado con el modelo vista controlador, ala, por ahora solo esta dependencia, next. 502 00:20:14,529 --> 00:20:16,730 Y ahora ya él 503 00:20:16,730 --> 00:20:18,190 Pues venga, finish 504 00:20:18,190 --> 00:20:23,980 Y nos crea 505 00:20:23,980 --> 00:20:25,720 Todavía ha tardado un rato 506 00:20:25,720 --> 00:20:28,220 Está abajo ahí creando cosas 507 00:20:28,220 --> 00:20:38,640 Y nos lo va creando 508 00:20:38,640 --> 00:20:39,900 Todavía, ya ha terminado 509 00:20:39,900 --> 00:20:43,960 Claro, claro 510 00:20:43,960 --> 00:20:45,319 Sí, no, internet 511 00:20:45,319 --> 00:20:47,660 Es que hace para cuando usas Maven 512 00:20:47,660 --> 00:20:49,259 Pues a 2x3 para que sincronice 513 00:20:49,259 --> 00:20:50,960 Sí, dime 514 00:20:50,960 --> 00:20:53,900 Vale 515 00:20:53,900 --> 00:20:58,180 Un segundín.