Como crear un CRUD con Spring Framework 5.2.13 y Bootstrap 4.6 – Parte 1

Demo

El Lenguaje de Programación Java es uno de los más robustos en la industria del Desarrollo de Software y Spring Framework opto bien en elegirlo para desarrollar aplicaciones web, pero es
importante primero aprender a realizar operaciones CRUD (Create, Read, Update y Delete) antes de crear aplicaciones más avanzadas y en este tutorial te enseñare a crear un sistema CRUD con Spring Framework, MySQL y Bootstrap, vamos con ello.

Partes

Antes de continuar con este Post, te invito a leer los siguientes artículos:

Asimismo te invito a escuchar el Podcast: “Con Que Lenguaje De Programación Comenzar Para El Desarrollo Web”:

Spotify: Sound Cloud: Apple Podcasts

Bien ahora continuemos con el Post: Como crear un CRUD con Spring Framework 5.2.13 y Bootstrap 4.6 – Parte 1.

Lo primero que haremos es crear un nuevo proyecto, hasta la fecha de este Post, Spring nos brinda una herramienta en su sitio web llamada Spring Initializr que nos crea rápidamente un proyecto con Spring Framework.

Creación de Nuevo Proyecto

Voy a la página oficial de Spring Framework y hago clic en el botón que dice QUICKSTAR.

En la siguiente página, nos aparece una recomendación de Spring sobre las herramientas que son necesarias tener para el trabajo con Spring Framework y debajo en el Paso 1 (Step 1) nos aparece un enlace que dice start.spring.io, hacemos clic en este enlace.

En la siguiente página nos carga Spring Initializr, un entorno o herramienta en donde configuraré y crearé mi nuevo proyecto. En las opciones elegiré Maven Project, en Language selección Java, en la parte de Spring Boot elijo 2.4.3 y debajo en Project Metadata en Group le coloco com.sistemacrud, en Artifact y Name le pongo crud, en Packaging elijo Jar y por último en versión de Java elijo 11.

Antes de generar el proyecto voy a agregar algunas dependencias importantes para trabajar con spring Framework. En la parte de derecha hago clic en el botón que dice ADD DEPENDENCIES… CTRL + B

Voy a buscar y agregar las dependencias que creo son necesarias para trabajar sin problemas en mi sistema CRUD, estas son Spring Web y Spring Boot DevTools. Más adelante agregaré otras dependencias dentro de mi archivo pom.xml

Por ultimo presiono el botón que se encuentra en la parte inferior y dice GENERATE CTRL + ⏎ para exportar el proyecto, se me descargará un archivo en formato ZIP.

Abro el archivo que se me ha descargado y extraigo todos los archivos en mi computadora, tendremos un conjunto de directorios y archivos indispensables para que el proyecto funcione sin problemas.

/sistemacrud
  ├── /.mvn
  ├── /src
  ├── /target
  ├── .gitignore
  ├── HELP.md
  ├── mvnw
  ├── mvnw.cmd 
  ├── porn.xml

Ahora voy a realizar una configuración para levantar el proyecto y verificar si este esta funcionando correctamente, si es así, entonces puedo continuar desarrollando mi sistema CRUD sin problemas.

Abro el archivo llamado SistemacrudApplication.java que se encuentra en sistemacrud > src > main > java > com > sistemacrud > sistemacrud > SistemacrudApplication.java 

/sistemacrud 
  ├── /.mvn
  ├── /src
      ├── /main
          ├── /java  
              ├── /com 
                  ├── /sistemacrud  
                      ├── /sistemacrud  
                          ├── SistemacrudApplication.java // Abro este Archivo 
  ├── /target
  ├── .gitignore
  ├── HELP.md
  ├── mvnw
  ├── mvnw.cmd 
  ├── porn.xml

Dentro del archivo SistemacrudApplication.java agrego la siguientes dependencias en la parte superior.

package com.sistemacrud.sistemacrud; 

// Dependencias 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; 
 
// Anotaciones 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

Luego dentro de mi clase SistemacrudApplication agrego una ruta a la Página Principal con un mensaje que dice Hola Soy un Sistema CRUD !.

@SpringBootApplication
@RestController
public class SistemacrudApplication {

	public static void main(String[] args) {
		SpringApplication.run(SistemacrudApplication.class, args);
	}

	// Ruta a la Página Principal 
	@GetMapping("/")
	public String mensaje(@RequestParam(value = "saludo", defaultValue = "Soy un Sistema CRUD") String saludo) {
		return String.format("<h1>Hola %s ! </h1>", saludo);
	}

}

A continuación el código completo del archivo SistemacrudApplication.java

package com.sistemacrud.sistemacrud; 

// Dependencias 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; 
 
// Anotaciones 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@RestController
public class SistemacrudApplication {

	public static void main(String[] args) {
		SpringApplication.run(SistemacrudApplication.class, args);
	}

	// Ruta a la Página Principal 
	@GetMapping("/")
	public String mensaje(@RequestParam(value = "saludo", defaultValue = "Soy un Sistema CRUD") String saludo) {
		return String.format("<h1>Hola %s ! </h1>", saludo);
	}

}

Abro mi consola de comandos en el directorio del proyecto e inicio el servidor local de Spring Framework, ejecutando el siguiente comando.

# Iniciar Servidor de Spring Framework 
./mvnw spring-boot:run

[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< com.sistemacrud:sistemacrud >---------------------
[INFO] Building sistemacrud 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> spring-boot-maven-plugin:2.5.2:run (default-cli) > test-compile @ sistemacrud >>>
[INFO]
[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ sistemacrud ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ sistemacrud ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.2.0:testResources (default-testResources) @ sistemacrud ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] skip non existing resourceDirectory E:\xampp\htdocs\xampp\nc\tutoriales\blog\sistemacrud\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ sistemacrud ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to E:\xampp\htdocs\xampp\nc\tutoriales\blog\sistemacrud\target\test-classes
[INFO]
[INFO] <<< spring-boot-maven-plugin:2.5.2:run (default-cli) < test-compile @ sistemacrud <<<
[INFO]
[INFO]
[INFO] --- spring-boot-maven-plugin:2.5.2:run (default-cli) @ sistemacrud ---
[INFO] Attaching agents: []

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.5.2)

2021-06-28 15:29:01.013  INFO 256 --- [  restartedMain] c.s.sistemacrud.SistemacrudApplication   : Starting SistemacrudApplication using Java 16.0.1 on DESKTOP-HHKT0VD with PID 256 (E:\xampp\htdocs\xampp\nc\tutoriales\blog\sistemacrud\target\classes started by JC in E:\xampp\htdocs\xampp\nc\tutoriales\blog\sistemacrud)
2021-06-28 15:29:01.015  INFO 256 --- [  restartedMain] c.s.sistemacrud.SistemacrudApplication   : No active profile set, falling back to default profiles: default
2021-06-28 15:29:01.086  INFO 256 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2021-06-28 15:29:01.086  INFO 256 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2021-06-28 15:29:02.068  INFO 256 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2021-06-28 15:29:02.080  INFO 256 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-06-28 15:29:02.080  INFO 256 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.48]
2021-06-28 15:29:02.167  INFO 256 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-06-28 15:29:02.167  INFO 256 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1080 ms
2021-06-28 15:29:02.480  INFO 256 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2021-06-28 15:29:02.535  INFO 256 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-06-28 15:29:02.545  INFO 256 --- [  restartedMain] c.s.sistemacrud.SistemacrudApplication   : Started SistemacrudApplication in 1.928 seconds (JVM running for 2.454)
2021-06-28 15:29:05.475  INFO 256 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2021-06-28 15:29:05.476  INFO 256 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2021-06-28 15:29:05.477  INFO 256 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms

Entonces si voy a la ruta local http://localhost:8080/ debo de ver el mensaje respectivo y confirmo que el proyecto se ha creado  correctamente.

Muy bien, hasta aquí llegamos con esta primera parte del tutorial en donde he creado un Nuevo Proyecto para el sistema CRUD en Spring Framework. 

Ten Paciencia, lo que quiero es que conozcas bien como se crea este proyecto y no llenarte el capitulo de mucho contenido porque te puedes marear y no tendrás un óptimo aprendizaje. 

Nota (s)

  • En la siguiente parte vamos a configurar la base de datos MySQL con la tabla y sus campos respectivos.
  • Los pasos mencionados en este tutorial pueden cambiar en un futuro, esto no depende de mi, si no de la organización que da soporte a Spring Framework, que suele cambiar el orden y las opciones de su herramienta.
  • No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.

 

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.