You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

1 Días
8 Hrs
38 Min
42 Seg
Curso de Java Spring

Curso de Java Spring

Alejandro Ramírez

Alejandro Ramírez

Creando aplicaciones autocontenidas con Spring Initializr

6/35
Resources

What is a self-contained application and how does it relate to SpringBoot?

Today, trends in application development are leading us towards more agile and modular models, leaving behind large monolithic architectures. In the past, enterprise applications used to be deployed on a single server that managed configurations, databases, and external services. This approach can have its advantages, but it also complicates deployment and maintenance.

Advantages of a modular architecture

Modern architectures choose to divide a large application into small independent services or microservices that collaborate with each other. Among the advantages of this approach, the following stand out:

  • Ease of development: Each microservice is developed as a small self-contained application.
  • Easy maintenance: Updates are performed on specific modules without affecting the entire application.
  • Scalability: Services can be scaled independently according to their specific demand.

Spring Boot and its role

Spring Boot emerges as the ideal solution for building self-contained applications. Unlike other projects in the Spring ecosystem, Spring Boot allows you to forget about complicated application server configuration and focus on writing the best possible code.

To achieve this, Spring Boot includes an embedded application server, being Apache Tomcat its default choice, but it also allows to use Jetty or Undertow. In addition, Spring Boot offers:

  • Dependency manager: Options such as Maven or Gradle to manage project dependencies.
  • Automatic configurations: Adaptations of the application automatically according to the developer's needs.

How do I start my project with Spring Initializer?

Spring Initializer is an official Spring tool to create self-contained applications quickly and with the necessary configurations from the beginning. Here are some steps to start your project:

Initial Setup

  1. Project type: Choose between Maven or Gradle. Gradle is preferred by some developers for its ability to create executable tasks.
  2. Language: Although Spring Boot supports Groovy and Kotlin, Java is usually the most common choice because of its stability and popularity.
  3. Spring Boot version: It is crucial to use a stable version; currently, version 2.3.1 is recommended.
  4. Project details: Define the group, artifact, and package name to avoid duplication.

Dependency selection

When choosing initial dependencies, consider:

  • Spring Web: Essential for creating RESTful APIs using Apache Tomcat as a container.
  • Other dependencies: As your project evolves, you can add other necessary dependencies directly in the build.gradle file.

Download and unzip the project

Once everything is configured, Spring Initializer generates a .zip file containing the project structure:

  • Basic files: They include .gitignore, HELP.md, and build.gradle.
  • Project structure: src folder containing main for the application code and test for testing.

How do I interpret the generated structure?

When you unzip the generated file, you will notice the following important structure:

File build.gradle

This is the heart of your dependency management. Here you define:

  • Plugin and version: The plugins you will use and the Java version.
  • Repositories: Where the dependencies will be obtained from.
  • Dependencies and testing: All necessary dependencies for the correct operation and testing of the application.

src folder

This is the section where your source code files will live:

  • main/java: It would contain the Java classes package, including the main class with the main method.
  • resource/application.properties: File where you will specify custom settings for your application.

With this guide, you are ready to dive into the world of agile and modular development with Spring Boot. I invite you to continue learning and experimenting with this powerful tool that will soon become one of your favorite resources in application development. Let's get to programming!

Contributions 39

Questions 10

Sort by:

Want to see more contributions, questions and answers from the community?

Excelente esta renovación del curso, el anterior dejo mucho que desear

Hasta hace algún tiempo las aplicaciones web empresariales lucias como el grafico de la izquierda, teníamos un servidor de aplicaciones que contenían su configuración donde van configuración de bases de datos, servicios externos, variables, etc. allí también ibas desplegadas todas las aplicaciones que quisiéramos que interactuaran o colaborativamente entre si, ahora las tendencias han cambiado las arquitecturas modernas nos sugieren tener algo como el diagrama de la derecha donde tengamos pequeñas aplicaciones o pequeños servicios que interactúen entre si, en vez de una gran aplicación. esto nos da mucha facilidad al momento de desarrollo y al momento de mantener nuestra aplicación. Cada aplicación internamente contiene su propio servidor de aplicaciones, con una configuración totalmente independiente una de la otra. como vimos en la clase anterior sprint Boot es el proyecto de sprint para crear aplicaciones autocontenidas estos nos permite olvídanos completamente de la arquitectura y enfocarnos únicamente en desarrollo, delegadle a sprint boot labores como configuración de dependencias o desplegar nuestros servicios o aplicación a un servidores de aplicaciones y enfocarnos únicamente en crear el mejor código posible. Para eso sprint boot utiliza internamente un servidor de aplicaciones embebido o un contenedor de aplicaciones embebido, por defecto sprint boot utiliza TOMCAT pero podemos hacerlo también con JETTY o con UNDERTOW.

Las arquitecturas modernas se basan de acuerdo a una aplicacion autocontenida
Cada aplicación internamente contiene su servidor de aplicaciones con su configuración totalmente independiente una de la otra en lugar de todas las aplicaciones centralizadas en un solo servidor

  • Spring Boot
    • Es el proyecto de Spring para aplicaciones autocontenidas
    • Olvidarnos de la infraestructura y centrarnos en el desarrollo
    • Puede funcionar con Tomcat (por defecto), Jetty o Undertow.
    • Incluye gestión de dependencias iniciales, configuración automática y más

No se pero creo que los cursos de java deberian actualizarlos ya tienen 3 Años.

Que tristeza cuando te das cuenta que trabajas en una empresa de la edad de piedra…!

Quería seguir el curso pero la opción mínima de Java para Spring al día de hoy es 17, eso dice mucho de lo antiguo que es este curso :(

Es uno de los curso que venia esperando hace bastante tiempo y el profesor es una excelente persona y un muy buen profesional, espero aprender bastante en este curso. Saludes Alejandro.

jajaja como no puedo ver a los ojos al profe por el reflejo siento que es un robot

¡Qué interesante!.
Entonces, si tuviera un proyecto donde necesitara una API, un Dashboard donde use Thymeleaf y otros servicios más,
¿Una buena práctica sería crear un proyecto de SpringBoot para cada uno de esos servicios? o
¿Dejar todos estos servicios en una misma aplicación de Spring Boot, separada por paquetes (com.proyecto.api … com.proyecto.dashboard … etc)?

Aplicacion autocontenida son pequeños servicios que interactuan entre si (microservicios). Facilita el desarrollo y la manteniblidad de la aplicacion. Sprint Boot tiene embebido un servidor(tomcat), tambien incluye un gestor de dependencias.

Comentario de 2024 curioso : Ahora Spring initiliz utiliza **JAVA 17 y JAVA 21** porque son versiones mejoradas de lo que ofrece **JAVA 11** con su LTS(Long Term Support)

Creo que deberian actualizar los cursos, hoy en dia hay muchas versiones y cosas nuevas y confunde.

Cuando entro a generar el zip de la pagina la version de java que aparece es la 17. La cambio a la 11 (que es la que ya tenia instalada) y en el build.gradle me genera sourceCompatibility = “17” aunque en la pantalla sigue seleccionada la 11. Al cambiarlo manualmente aparece un error al descargar las dependencias - Variant ‘mavenOptionalRuntimeElements’ Imcomptabile because this component is compatible with Java 17. Viendo la generacion del build.gradle antes de descargarlo noto que con la version de spring 2.7.14 si genera compatibilidad con la 11 y ya no da este error.

Para los que quieran seguir el curso con la versioón de Java, Spring y Gradle que usa el profesor pueden descargar el proyecto con cualquier versión del initializer y despues cambian dos cosas: 1\) Cambiar la versión de JAVA y Spring que se quiere usar en el build.gradle y que quede así ![]()![](https://static.platzi.com/media/user_upload/image-7c064811-176b-4583-a685-74f9588b0d08.jpg) ```js plugins { id 'java' id 'org.springframework.boot' version '2.3.1.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' } group = 'com.leonardo.market' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } ``` 2\) Cambiar el tipo de gradle a usar, para esto entramos en gradle>wrapper>gradle.wrapper.properties y modificamos la line a de URL ![]()![]()![]()![]()![](https://static.platzi.com/media/user_upload/image-42f852c0-352e-4933-aa61-ed20a0b1f7f9.jpg) ```js distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip ```

Aplicación autocontenida
Significa que cada aplicación tiene su propia configuración

Spring Boot: Es el proyecto de Spring para aplicaciones autocontenidas

Estas estructuras se conocen como BACKENDFORFRONTED Y MICROFRONTEND

Este curso sirve aun despues de 4 años?
Bueno 4 años después. está desactualizado...
El curso esta algo desactualizado, Springboot esta por la versión 3.2.0 y la versión minima con la que funciona es Java 17, no deja usar versiones inferiores.

El curso está bien, pero creo que debería decir, Curso de Spring Boot, dado que lo que se habla de Spring por si mismo es muy poco

Esto es algo parecido a Google Kubernetes…?

Excelente curso!

Deberian actualizar los cursos, intenté crear el proyecto y me manda varios errores. @platzi ya se esta quedando obsoleto en varios cursos
Es impresión mía, o en esta clase faltan los recursos de tooodo lo que el profesor habló y explicó en la clase. No los veo.
Excelente curso, por fin un instructor serio y que se nota que sabe
Gradle y Maven son herramientas de gestión de proyectos en Java, pero tienen diferencias clave. Maven es más estructurado y basado en XML, lo que facilita la configuración, pero puede ser rígido. Gradle, por otro lado, utiliza un DSL basado en Groovy, lo que permite configuraciones más flexibles y personalizables. Además, Gradle es más rápido gracias a su sistema de caché y puede manejar proyectos multi-módulo de manera más eficiente. Groovy es un lenguaje de programación dinámico que se utiliza con Gradle, lo que permite escribir scripts de construcción más concisos y legibles. Esto mejora la experiencia de desarrollo al ofrecer un enfoque más expresivo.
**Tip 2024:** En el Spring Initializr solo aceptan desde el jdk 17. Asi que una opcion valida y para que no quede tan obsoleta la version pueden usar esta![](https://static.platzi.com/media/user_upload/image-daa1357e-2d31-458a-bc0e-80351284bdac.jpg) .msi ![](https://static.platzi.com/media/user_upload/image-29af9219-2e83-45f2-8c86-05b3eea2bd41.jpg)Se puede observar que solo hay desde 17
excelente la data.
Esta es una excelenete oportunidad para aprender a desarrollar aplicaciones robustas y escalables en Java de manera eficiente.
He hechado de menos hacer una implementación con Maven y hacer el mismo analisis. En mi experiencia Maven es más pupular, aún no he trabajado en ningun proyecto en el que se utilice Gradle.
Configurando el proyecto, Tiene Gradle Grovy y Gradle Kotlin, no sabía cual de ellos seleecionar ![](https://static.platzi.com/media/user_upload/image-14fa953a-4e56-45b5-a4dd-f1add02d392e.jpg)

Link de spring initializr 👇

                            https://start.spring.io/

¡Este curso es muy bueno!

Me pregunto si debiera seleccionar las versiones más recientes de todo lo que se ve durante el curso
El profe menciona algo muy interesantes y es programación reactiva, que chévere que se diera un curso sobre esto, en base a este proyecto, usando r2dbc y/o alguna base de datos de AWS, seria interesante ver los cambios java 11 vs java 17.

siempre hay algo nuevo que aprender

Estoy en platzi day y esta muy lenta la plataforma

tiene un servidor de aplicaciones incluido, por defecto es Tomcat, pero también se podría usar Jetty o Undertow