Aplicación Web

Spring Boot: Simplificando el Desarrollo de Aplicaciones Web

Introducción

La creación de aplicaciones web a menudo es un proceso complicado que involucra diversos obstáculos técnicos e infraestructurales. Spring Boot es una plataforma diseñada para simplificar este procedimiento, permitiendo a los programadores enfocarse en la lógica de negocio en lugar de ocuparse de la configuración y la infraestructura. Se fundamenta en el bien conocido Spring Framework y ha ganado una amplia aceptación en la comunidad de desarrolladores gracias a su facilidad de uso y su capacidad para generar aplicaciones web sólidas.

¿Qué es?

Spring Boot es un marco de desarrollo de aplicaciones de código abierto para el lenguaje de programación Java. Su principal objetivo es simplificar y acelerar la creación de aplicaciones Java, especialmente aplicaciones web y microservicios. Se basa en el popular proyecto Spring Framework y ofrece una forma más fácil y rápida de configurar, desarrollar y desplegar aplicaciones Java.

Características de springboot

Herramientas que funcionan con Spring Boot
  • Configuración Automática: Se basa en el principio de configuración automática para establecer automáticamente las bibliotecas y dependencias necesarias para su aplicación, eliminando la necesidad de configurar cada aspecto de la aplicación de forma manual.
  • Spring Initializr: Para acelerar el proceso de inicio de un proyecto, ofrece una herramienta llamada Spring Initializr que permite a los desarrolladores crear un proyecto Spring Boot listo para usar con tan solo unos pocos clics.
  • Servidor Web Integrado: Incluye un servidor web integrado, como Tomcat o Jetty, lo que significa que no es necesario configurar un servidor web externo para ejecutar la aplicación. Esto simplifica considerablemente la creación y el despliegue de aplicaciones web.
  • Starter: Para facilitar la incorporación de funcionalidades específicas a la aplicación, el framework proporciona “starters”, que son conjuntos de dependencias preconfiguradas para diferentes tipos de aplicaciones, como aplicaciones web o aplicaciones de datos.

Desventajas

A pesar de que es una herramienta altamente eficaz y ampliamente adoptada en el desarrollo de aplicaciones web y en el entorno Java en general, también conlleva algunas desventajas y consideraciones que los desarrolladores deben tener en cuenta:

Cambios constantes en la comunidad: Dado que evoluciona y se desarrolla a un ritmo rápido, puede representar un desafío mantenerse al día con las últimas actualizaciones y modificaciones en la comunidad. Esto puede dar lugar a cambios disruptivos en las aplicaciones existentes durante las actualizaciones.

Tamaño de la aplicación: Incluye de forma predeterminada muchas bibliotecas y dependencias, lo que puede resultar en aplicaciones generadas que ocupen un espacio considerable. Esto puede ser una desventaja si se está desarrollando una aplicación que tiene restricciones en cuanto a ancho de banda o almacenamiento.

Funcionalidades innecesarias: En algunas aplicaciones simples, puede ofrecer más funcionalidad de la necesaria, lo que podría dar lugar a una carga de características innecesarias. Esto podría afectar el rendimiento y aumentar la complejidad del código.

Potencial de sobreingeniería: Debido a la abundancia de funcionalidades proporcionadas por Spring Boot de manera predeterminada, existe la tentación de realizar una sobreingeniería en proyectos pequeños o simples. Esto puede resultar en una mayor complejidad y costos innecesarios.

Ejemplo de Simplificación en Spring Boot

aplicaciones web

Supongamos que deseas crear una aplicación web simple que muestre una lista de tareas. En un enfoque tradicional sin el uso de Spring Boot, tendrías que configurar manualmente un servidor web, definir controladores, gestionar la configuración y establecer la estructura del proyecto. Veamos cómo se vería esto en un enfoque tradicional usando Servlets y JSP:

JAVA

// Clase principal de Servlet
public class TareaServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<String> tareas = obtenerTareasDesdeAlgunaFuente();
        request.setAttribute("tareas", tareas);
        RequestDispatcher dispatcher = request.getRequestDispatcher("/tareas.jsp");
        dispatcher.forward(request, response);
    }

    // Lógica para obtener tareas desde una fuente de datos (por ejemplo, una base de datos)
    private List<String> obtenerTareasDesdeAlgunaFuente() {
        // Código para obtener tareas desde la fuente de datos
    }
}

XML

<!-- Archivo de configuración web.xml -->
<servlet>
    <servlet-name>TareaServlet</servlet-name>
    <servlet-class>com.example.TareaServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>TareaServlet</servlet-name>
    <url-pattern>/tareas</url-pattern>
</servlet-mapping>

HTML

<!-- tareas.jsp -->
<html>
<head>
    <title>Lista de Tareas</title>
</head>
<body>
    <h1>Lista de Tareas</h1>
    <ul>
        <% for (String tarea : (List<String>) request.getAttribute("tareas")) { %>
            <li><%= tarea %></li>
        <% } %>
    </ul>
</body>
</html>

En este enfoque, debes configurar manualmente el Servlet, el mapeo URL, gestionar la lógica de obtención de tareas y crear una página JSP para mostrar los datos.

Ahora, veamos cómo se simplificaría este mismo escenario utilizando el framework:

JAVA Spring Boot

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;

@SpringBootApplication
public class TareasApplication {

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

@Controller
public class TareaController {

    @GetMapping("/tareas")
    public String mostrarTareas(Model model) {
        List<String> tareas = obtenerTareasDesdeAlgunaFuente();
        model.addAttribute("tareas", tareas);
        return "tareas";
    }

    // Lógica para obtener tareas desde una fuente de datos (por ejemplo, una base de datos)
    private List<String> obtenerTareasDesdeAlgunaFuente() {
        // Código para obtener tareas desde la fuente de datos
    }
}

En este ejemplo, podemos notar las siguientes ventajas:

No es necesario configurar un archivo web.xml para definir el servlet y el mapeo URL. Spring Boot maneja esto automáticamente.

El controlador es una clase Java simple anotada con @Controller, lo que facilita su identificación como componente de la aplicación.

La gestión de la vista se realiza de manera más sencilla utilizando Thymeleaf o JSP (en este caso, se utiliza Thymeleaf), sin la necesidad de escribir directamente HTML en el controlador. La configuración de la aplicación es mínima gracias a @SpringBootApplication, lo que permite que Spring Booconfigure automáticamente la aplicación y el servidor web incorporado.

En resumen, Spring Boot simplifica la configuración y el desarrollo de aplicaciones web al proporcionar convenciones por defecto y una estructura de proyecto coherente, lo que ahorra tiempo y esfuerzo a los desarrolladores.

Créditos

Autor: Edwar Esneyder Aguiar Garcia

Editor: Carlos Iván Pinzón Romero

Código: UCPIG2-5

Universidad: Universidad Central

Fuentes:

spring. (s.f.). Spring Boot. Spring. https://spring.io/projects/spring-boot

IBM. (s.f.). ¿Qué es Java Spring Boot?. IBM. https://www.ibm.com/topics/java-spring-boot

Javin P. (2018). Top 5 Spring Boot Features Java Developers Should Know. DZone. https://dzone.com/articles/top-5-spring-boot-features-java-developers-should

Turing (s.f.). Spring vs Spring Boot: An in-depth Comparison (Updated 2023). For developers. https://www.turing.com/kb/spring-vs-spring-boots-best-web-apps

Medium. (s.f.). 1_XBp-O6oD5jTOxQVETUl1MA [imagen]. Medium. URL https://miro.medium.com/v2/resize:fit:1400/format:webp/1*XBp-O6oD5jTOxQVETUl1MA.jpeg

ZEPTO. (s.f). OIP [Imagen]. ZEPTO. URL https://blogs.ashrithgn.com/content/images/size/w2000/2019/11/th.jpg

Diaz, M. (2017). aplicación-web-y-de-escritorio-01 [Imagen]. Fuego Yámana. URL https://www.fuegoyamana.com/wp-content/uploads/2017/04/aplicaci%C3%B3n-web-y-de-escritorio-01.jpg

CIGNEX. (s.f). Spring Boot Services-min [Imagen]. CIGNEX. URL https://d3og4dnvcwjaft.cloudfront.net/sites/default/files/Spring%20Boot%20Services-min.png

Todo Tic Academy. (1 junio 2021). ¿Qué es Spring Boot y por qué deberías usarlo? . YouTube. https://youtu.be/wlZWt_fIAyM?si=IWnAUlmpdiBM2FTA