
En esta lección se explica que es el proyecto Spring Boot y como funciona.
En esta lección aprenderás a instalar la nueva herramienta de Spring (Spring Tools 4) para desarrollar aplicaciones con Spring Boot.
En esta lección se explica como crear un proyecto de Spring Boot utilizando el servicio de Spring Initializr. Posteriormente se explica como importar el proyecto en Spring Tools.
En esta lección vamos a ver como Iniciar/Detener un proyecto web basado en Spring Boot desde el IDE.
En esta lección vamos a ver como crear nuestro primer controlador en una aplicación web desarrollada con Spring Boot.
En esta lección aprenderás como perzonalizar el puerto HTTP en el que escucha tu aplicación Spring Boot.
En este artículo se explica como descargar las diapositivas y código fuente utilizados en el curso.
En esta lección vamos a ver las principales características del framework Spring MVC.
En esta lección vamos a crear el proyecto base que usaremos para el proyectos de publicación de ofertas de trabajo.
En esta lección veremos la estrutura de un controlador (Controller) en Spring MVC
En esta lección aprenderás a configurar la página de inicio de una aplicación web desarrollada con Spring Boot
En esta lección vamos a ver de forma general que es Thymeleaf.
En esta lección veremos como agregar datos al modelo, para posteriormente desplegar estos datos en las vistas.
En esta lección vamos a ver como configurar la plantilla de archivos HTML de nuestro IDE STS para que incluya el namespace de Thymeleaf en las plantillas HTML.
En esta lección veremos como agregar al modelo los tipos de datos simples más comunes y veremos como mostrarlos en la vista.
En esta lección veremos como agregar al modelo una lista de String y veremos como desplegarla en la vista utilizando la expresión <th:each>.
En esta leccion vamos a crear nuestra primera clase de modelo Vacante que va representar los datos de una oferta de trabajo para publicar en Internet.
En esta lección veremos agregar al modelo un tipo de dato Vacante y posteriormente veremos como renderizarlo en la vista.
En esta lección veremos como agregar al modelo objetos personalizados y veremos como mostrarlos en la vista dentro de una tabla HTML.
En esta lección vamos a ver como integrar el Framework Bootstrap vía CDN. Una vez integrado le daremos formato a una tabla HTML.
En esta lección aprenderás como puedes integrar condicionales de Thymeleaf en tus vistas. En concreto veremos como usar el operador Elvis (?:) y el condicional if - unless.
En esta lección veremos un ejemplo práctico de como como usar el operador Elvis (?:) y el condicional if - unless.
En esta lección veremos como se pueden incluir archivos estáticos como imágenes, javascript y hojas de estilo en tus vistas.
En esta lección vamos a ver como incluir una imagen en una vista.
En esta lección vamos a ver como incluir la imagen para cada Vacante de forma dinámica.
En esta lección se explica paso a paso el ciclo de vida de un petición HTTP en una aplicación desarrollada con Spring MVC.
En esta lección vamos a ver para que sirve la anotación @RequestMapping a nivel de métodos.
En esta lección veremos un ejemplo práctico de la anotación @RequestMapping.
En esta lección vamos a ver para que sirve la anotación @RequestMapping a nivel de una clase
En esta lección se explica como generar URLs dinámicas en Spring MVC utilizando la anotación @PathVariable.
En esta lección vamos a ver un ejemplo práctico de como generar URLs dinámicas por medio de la anotación @PathVariable.
En esta lección vamos a ver como generar un link con un elemento <a> que responda a una URL dinámica.
En esta lección se explica como utilizar la anotación @RequestParam para recibir los parámetros de peticiones GET y POST en los métodos de los controladores.
En esta lección veremos un ejemplo practico del uso de la anotacion @RequestParam para recibir parámetros HTTP tipo GET.
En esta lección veremos un ejemplo práctico del uso de la anotacion @RequestParam para recibir parámetros HTTP tipo POST desde un formulario HTML.
En esta lección vamos a crear nuestra primera clase de servicio llamada VacantesServiceImpl. Esta clase tendrá un método el cual proporcionará la lista de vacantes para renderizarlas en la página principal.
En esta lección vamos a ver como utilizar la anotación @Autowired para poder inyectar una instancia de una clase de servicio en un controlador.
En esta lección vamos a ver un ejemplo práctico de como utilizar la anotación @Autowired para inyectar la clase de servicio VacantesServiceImpl en el controlador HomeController.
En esta lección vamos a agregar un nuevo método llamado buscarPorId a nuestra interfaz IVacantesService
En esta lección se explicará la plantilla HTML que se utilizará para el desarrollo del proyecto final.
En esta lección se explica como integrar el archivo home.html para cambiar el diseño de la página principal de la aplicación EmpleosApp.
En esta lección se renderiza la lista de Vacantes de forma dinámica en la página principal.
En esta lección de integra el archivo detalle.html de la plantilla para renderizar los detalles de una vacante de forma dinámica.
En esta lección integraremos el diseño del formulario HTML para crear una nueva Categoría.
En esta leccion veremos como reutitilizar código HTML en nuestras plantillas HTML.
En esta leccion veremos un ejemplo pŕactico de como reutitilizar código HTML en nuestras plantillas HTML.
En esta lección vamos a integrar el código HTML del archivo formVacante.html en nuestro proyecto. Este será el diseño final para el formulario para crear una nueva Vacante.
En esta lección vamos a ver que es Data Binding en Spring MVC. Esta característica es uno de los puntos fuertes de este excelente framework, ya que nos ayuda a mapear los datos de los formularios HTML a nuestras clases de modelo de forma automática.
En esta lección vamos a ver un ejemplo práctico de Data Binding en Spring MVC. El ejemplo consiste en extraer los datos del formulario HTML para crear Vacantes y pasar los datos de este formulario a la clase de modelo Vacante de forma automática.
En esta lección vamos a ver utilizar la anotación @InitBinder para crear métodos para personalizar el Data Binding en los controladores
En esta lección vas a crear una vista para practicar muchos de los conceptos que han sido aprendido hasta este momento en el curso. La vista que vas a desarrollar será la vista utilizada para desplegar el listado de todas las vacantes que se encuentran almacenadas en una lista Enlazada.
En esta lección vamos a ver como podemos verificar si ocurrio algún error después de realizarse el Data Binding. Tambien vamos a ver como podemos desplegar cada uno de los errores en la consola de salida.
En esta lección vamos a ver como utilizar la expresion {#fields.hasErrors('*')} para desplegar los errores de Data Binding en la vista.
En esta lección vamos a ver como realizar una redirección (redirect) desde un método en un controlador.
En esta lección vamos a ver como utilizar los Flash Attributes de Spring MVC para agregar atributos para que estén disponible en otra petición diferente, por ejemplo al utilizar el patrón Post/Redirect/Get.
En esta lección se explica el funcionamiento del Plug-In llamado TinyMCE que permite integrar un Editor Web basado en HTML y Javascript en aplicaciones web.
En esta lección veremos como funciona el Plug-In llamado TinyMCE que permite integrar un Editor Web basado en HTML y Javascript en aplicaciones web.
En este ejercicio practicarás la inyección de dependencias de una clase de servicio en un controlador
En esta lección aprenderás a utilizar la expresión th:field de Thymeleaf para vincular los inputs de los formularios HTML a las propiedades de las clases de modelo.
En esta lección veremos como generar un input de tipo <select> de forma dinámica con valores de un List<Categoria>.
En esta lección vamos a ver un ejemplo práctico de Data Binding utilizando tipos de datos definidos por el usuario. Para este ejemplo, agregaremos a nuestra clase Vacante un atributo de tipo Categoria y configuremos el input de tipo <select> de Categorias para recibir la categoria seleccionada.
En esta lección a ver la configuración necesaria para permitir Upload de archivos en una aplicación web desarrollada con Spring Boot
En esta lección se proporciona una clase de Utileria con soporte para guardar los archivos subidos desde un formulario HTML.
En esta lección vamos a ver un ejemplo práctico de como subir archivos al servidor. El ejemplo consiste en subir la imágen de la vacante desde el formulario HTML y guardarla en el directorio C:\empleos\img-vacantes
En esta lección vamos a ver como reemplazar los espacios del nombre del archivo de la imagen con el caracter guión "-".
En esta lección vamos a ver como agregar algunos caracteres aleatorios a los nombres de los archivos para evitar duplicados.
En esta lección se explica como inyectar propiedades definidas en el archivo application.properties utilizando la anotación @Value.
Introducción a la segunda parte del curso.
En esta lección se explican los conceptos de JPA (Java Persistence API) y ORM (Object Relational Mapping).
En esta lección veremos las principales características del módulo de Spring Data JPA.
En esta lección te voy a explicar el diagrama entidad relación de la base de datos que vamos a utilizar para el proyecto del Empleos.
En esta lección vamos a crear la base de datos empleosdb y posteriormente vamos a importar el script con el código SQL para crear todas la tablas.
En esta lección vamos a crear el proyecto base para desarrollar todos los ejemplos de Spring Data JPA
En esta lección se explica como configurar el Datasource de conexión a una base de datos MySQL desde un proyecto Spring Boot.
En esta lección vamos a configurar nuestro proyecto base con Spring Data JPA.
En esta lección veremos como configurar una aplicación Spring Boot con un entorno NO WEB. Para esta vamos a implementar la interfaz CommandLineRunner para configurar un proyecto basado en consola.
En esta lección vamos a ver para que sirven la anotaciones @Entity, @Table, @Id y @GeneratedValue.
En esta lección vamos a crear un repositorio JPA que permita las operaciones CRUD para nuestras entidades de tipo Categoria. Para esta tarea vamos a utilizar la interfaz CrudRepository de Spring Data JPA.
En esta lección veremos como inyectar una instancia de nuestro repositorio CategoriasRepository en nuestra aplicación principal.
En esta lección vamos a ver como insertar una entidad en una tabla utilizando el método save().
En esta lección vamos a ver como utilizar el método findById() para buscar una entidad por Id.
En esta lección vamos a ver como actualizar los datos de una entidad utilizando el método save().
En esta lección vamos a ver como eliminar una entidad por medio del método deleteById().
En esta lección vamos a ver como utilizar el método count() para obtener el número total de registros de una tabla
En esta lección vamos a ver como utilizar el método deleteAll() para eliminar todas las entidades de una tabla.
En esta lección vamos a ver como podemos utilizar el método findAllById() de nuestro repositorio para recuperar varias entidades por Id.
En esta lección vamos a ver como recuperar todas la entidades de una tabla utilizando el método findAll().
En esta lección vamos a ver como utilizar el método existsById para saber si una entidad con un Id en particular existe en la base de datos.
En esta lección veremos como usar el metodo saveall para guardar varias Categorias a la vez.
En esta lección vamos a explicar de forma general dos interfaces (PagingAndSortingRepository y JpaRepository) que extienden la funcionalidad de la interfaz CrudRepository.
En esta lección vamos a ver como recuperar todas las entidades de una tabla utilizando el método findAll(). En este caso, al extender la interfaz JpaRepository, este método regresa una lista.
En esta lección vamos a ver como utilizar el método deleteAllInBatch para eliminar todas las entidades de una tabla.
En esta lección vamos a ver como recuperar todas las entidades ordenadas por un campo en particular.
En esta lección vamos a ver como recuperar las entidades con paginación.
En esta lección vamos a ver como recuperar entidades con el método findAll() con paginación y ordenamiento por un campo.
En esta lección vamos a configurar el repositorio para administrar las entidades de tipo Vacante en la base de datos.
En esta lección vamos a ver como utilizar la anotación @Transient del API de JPA para indicar que un atributo de una clase no mapea ningún campo en la tabla de la base de datos.
En esta lección vamos a ver como utilizar la anotación @OneToOne para configurar una relación 1-1 entre la tabla de Vacantes y la tabla de Categorias.
En esta lección veremos como guardar una nueva vacante en la base de datos y ademas veremos como asignarle su Categoria correspondiente.
En esta lección vamos a crear 2 clases de modelo: Usuario y Perfil. Posteriormente vamos a crear un repositorio de Spring Data JPA para cada clase de modelo.
En esta lección vamos a crear los registros de ROLES que servirán para la seguridad de nuestra aplicación de Empleos.
En esta lección vamos a ver como se usa la anotación @ManyToMany para configurar una relación Muchos a Muchos con JPA.
En esta lección vamos a ver como se crea un usuario con 2 perfiles asociados: ADMINISTRADOR Y USUARIO.
En esta lección vamos a ver como buscar un usuario en la base de datos y una vez encontrado desplegaremos los perfiles que tiene asociados.
⭐⭐⭐⭐⭐ ACTUALIZACIÓN DE CONTENIDO MARZO 2023 ⭐⭐⭐⭐⭐
SE HA ACTUALIZADO TODO EL CONTENIDO, CODIGO FUENTE DE LOS PROYECTOS DESARROLLADOS Y LOS VIDEOS PARA TRABAJAR CON LA VERSION DE SPRING BOOT 3 .
⭐⭐⭐⭐⭐ ACTUALIZACIÓN DE CONTENIDO (JUNIO 2021) ⭐⭐⭐⭐⭐
Se agregó nuevo contenido al curso (18 nuevas lecciones). El deployment de aplicaciones Spring Boot en un servidor Linux es uno de los contenidos mas solicitados por los alumnos y por tal motivo se agregó una nueva sección donde el alumno aprenderá a configurar un servidor Linux en la nube con el sistema operativo Ubuntu Server 20.04 LTS y además dejará instalada la aplicación de empleos lista para ser usada desde Internet.
¿ESTA ACTUALIZADO EL CURSO?
Este curso esta desarrollado con SPRING BOOT 2. El framework de Spring es un proyecto en constante evolución. POR ESTA RAZÓN TODO EL CÓDIGO FUENTE DESARROLLADO DURANTE EL CURSO ES TESTEADO CONTINUAMENTE CON LAS NUEVAS VERSIONES DE SPRING BOOT (RELEASE). En el caso de que alguna lección requiera ser actualizada, el video será actualizado para que funcione con la nueva versión de Spring Boot.
INTRODUCCIÓN
En este curso vas aprender a desarrollar Aplicaciones Web Profesionales y RestFul Web Services utilizando el framework más popular de Java Spring Boot 2. Aprenderás a usar Spring MVC para la funcionalidad de tu Aplicación Web, para el desarrollo de la capa de datos aprenderás a utilizar el módulo Spring Data JPA. Te enseñaré a integrar el framework más popular de persistencia de datos Hibernate para implementar el API de JPA. Finalmente, aprenderás Spring Security para implementar la seguridad de tus aplicaciones web.
BENEFICIOS DE TOMAR ESTE CURSO
Al terminar este curso tendrás en tu Curriculm Vitae el manejo de Spring Framework 5 & Spring Boot 2 y te ayudará a encontrar un empleo fácilmente o mejorar tu posición actual. Casi para cualquier trabajo relacionado con desarrollo web con Java, es necesario tener estas habilidades. Este curso te ayudará a aprender estas dos tecnologías de una forma muy rápida porque vamos a desarrollar un proyecto real para aplicar todos los conceptos que veremos a lo largo del curso.
HABILIDADES Y CONOCIMIENTOS QUE APRENDERÁS A LO LARGO DEL CURSO
Spring Boot
Crear proyectos Spring Boot con Spring Initializr & Spring Tools 4.
Desarrollar Aplicaciones Web con Spring Boot.
Desarrollar RestFul Web Services con Spring Boot.
Conocer la estructura de un proyecto Spring Boot.
Configurar parámetros de Spring Boot.
Spring MVC
Comprender la arquitectura de Spring MVC.
Comprender el ciclo de vida de las peticiones HTTP en Spring MVC.
Aplicar Spring MVC en aplicaciones web. Para esto utilizaremos clases JavaBeans como componentes de Modelo, Thymeleaf para la Vista y finalmente los Controladores.
Aplicar una arquitectura de 3 capas (presentación, negocio, persistencia) en tus aplicaciones web.
Desarrollar la capa de negocio con clases de servicio y la anotación @Service. Aprenderás a diseñar tus clases de servicio con INTERFACES para que tus clases de servicio tengan bajo aclopamiento y sean fáciles de mantener.
Comprender la Inyección de Dependencias (@Autowired).
Crear controladores con @Controller.
Manejo de Peticiones HTTP GET & HTTP POST: @RequestMapping, @GetMapping, @PostMapping.
Definir URI dinámicas con @PathVariable.
Comprender el Data Binding entre clases de modelo y formularios HTML.
Recibir datos de formularios HTML con @RequestParam.
Subida de archivos al servidor (Upload Files).
Integrar las vistas con Thymeleaf.
Manejo de errores en formularios HTML (BindingResult).
Declarar redirecciones y definir Redirect Attributes.
Formularios HTML de búsqueda.
Thymeleaf
Integrar Thymeleaf en proyectos Spring Boot para las vistas de tu aplicación web.
Iteraciones con th:each.
Condicionales th:if, th:unless, Elvis Operator (?:)
Configuración de recursos estáticos (Javascript, CSS, Images).
Integración del framework Front-End Bootstrap.
Integración de plantillas HTML.
Thymeleaf Page Layouts & Fragments.
Spring Data JPA
Integrar Spring Data JPA con Spring Boot.
Configurar el Datasource de conexión a MySQL 5.7 & 8.0
Configuración de clases Entity (@Entity, @Table, @Id, @Column).
Configuración de Relaciones (@OneToOne @OneToMany, @ManyToOne).
Definición de Repositorios con las interfaces (@CrudRepository, @JpaRepository).
Declaración de Query Methods con @Query.
Creación de consultas Query By Example (QBE).
Desarrollar la capa de persistencia utilizando Spring Data JPA.
Inyectar los repositorios en las clases de servicio (@Autowired).
Spring Security
Integrar Spring Security con Spring Boot.
Configurar Spring Security para leer los datos de los usuarios y roles de MySQL.
Definir seguridad por patrones de URLs.
Aplicar seguridad a tus aplicaciones web con Spring Security.
Desarrollar un formularion de Login personalizado.
RestFul Web Services
Crear controladores con @RestController.
Anotación @ResponseBody
Anotación @RequestBody.
Manejo del cliente REST Postman.
EL PROYECTO FINAL
A lo largo del curso vamos a desarrollar una APLICACIÓN WEB REAL COMPLETAMENTE FUNCIONAL. Esta aplicación no es la típica aplicación donde solo te enseñan ha realizar el CRUD de una tabla de contactos. En la vida real nunca te van a pedir que desarrolles una aplicación asi de sencilla. Por esta razón he decido aplicar todos los conceptos que veremos a lo largo de curso en el desarrollo de una aplicación más compleja. Durante el desarrollo de esta aplicación veremos muchas técnicas y funcionalidades que si te ayudarán en un proyecto real en tu trabajo.
¿Qué proyecto desarrollaremos?
El proyecto que vamos a desarrollar es una aplicación web para publicar ofertas de trabajo en Internet. Esta aplicación esta estructurada en dos secciones principales:
Front-End: Esta es la parte pública de la aplicación y estará abierta al público en general. En la página principal se mostrarán las ofertas de trabajo mas destacadas que han sido publicadas por un administrador. En la página principal también se encuentrá un formulario para buscar ofertas de trabajo por Descripción y por Categorías. Al hacer clic en una oferta de trabajo se mostrarán los detalles de esta vacante. Estos detalles son por ejemplo: fecha de publicación, salario ofrecido, detalles de la vacante (requisitos, requerimientos, prestaciones ofrecidas, datos de contacto, etc. En la página de los detalles de una vacante existirá un botón para que el usuario, siempre y cuando haya iniciado sesión pueda enviar si Curriculm Vitae para aplicar para la Vacante. Finalmente, en la página principal de la aplicación también existirá un botón para que los usuarios puedan registrarse en la aplicación.
Back-End: Esta es la parte privada de la aplicación y únicamente tendrán acceso los administradores. En esta sección los administradores podrán administrar la aplicación. Básicamente existirán 3 tipos de usuarios o roles: SUPERVISOR, ADMINISTRADOR y USUARIO. El SUPERVISOR tendrá acceso al catálogo de vacantes, categorías y solicitudes enviadas. El ADMINISTRADOR tendrá acceso al catálogo de vacantes, categorías, solicitudes enviadas y el catálogo de usuarios registrados. El USUARIO solo tendra permisos para Aplicar (enviar Curriculum Vitae) para una determinada Vacante.
Como puedes ver esta aplicación esta muy completa, por lo tanto vas a aprender muchas técnicas y conocimientos que podrás aplicar para tus propios proyectos.