Java SpringBoot Framework
SpringBoot es un proyecto de extensión del framework Spring, diseñado para simplificar la configuración inicial y el proceso de desarrollo de aplicaciones Spring.
SpringBoot, mediante el concepto de «convención sobre configuración», permite a los desarrolladores iniciar y ejecutar aplicaciones Spring rápidamente.
Características principales de SpringBoot
- Configuración automática: configura automáticamente la aplicación Spring según las dependencias jar añadidas al proyecto
- Ejecución independiente: incluye servidores como Tomcat, Jetty o Undertow, sin necesidad de desplegar archivos WAR
- Gestión simplificada de dependencias: simplifica la configuración de Maven/Gradle mediante dependencias starter
- Listo para producción: ofrece funciones como métricas, comprobaciones de salud y configuración externalizada
- Sin generación de código: no se necesita configuración XML
Componentes principales de SpringBoot
1. SpringBoot Starter
SpringBoot Starter es un conjunto de descriptores de dependencias convenientes que permiten obtener todas las tecnologías necesarias en un solo lugar. Por ejemplo:
spring-boot-starter-web: para construir aplicaciones webspring-boot-starter-data-jpa: para acceso a bases de datos JPAspring-boot-starter-test: para pruebas
2. SpringBoot AutoConfiguration
SpringBoot configura automáticamente la aplicación según los archivos jar en el classpath. Por ejemplo, si hay una base de datos H2 en el classpath, SpringBoot configurará automáticamente una base de datos en memoria.
3. SpringBoot Actuator
Ofrece funcionalidades de nivel de producción para ayudar a supervisar y gestionar la aplicación:
- Comprobación de salud de la aplicación
- Recopilación de métricas
- Seguimiento HTTP
- Información del entorno
Crear tu primera aplicación SpringBoot
1. Crear un proyecto con Spring Initializr
Visitastart.spring.io, selecciona:
- Proyecto Maven
- Lenguaje Java
- Última versión de SpringBoot
- Agregar la dependencia «Web»
2. Estructura del proyecto
Estructura típica de un proyecto SpringBoot:
src/
main/
java/
com/example/demo/
DemoApplication.java # 主启动类
resources/
application.properties # 配置文件
test/
java/
com/example/demo/
DemoApplicationTests.java # 测试类
3. Escribir un controlador REST simple
Ejemplo
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, SpringBoot!";
}
}
4. Ejecutar la aplicación
EjecutaDemoApplicationen la clasemainel método; la aplicación se iniciará en el puerto 8080 por defecto.
Visitahttp://localhost:8080/api/helloverás el mensaje «Hello, SpringBoot!» devuelto.
Configuración de SpringBoot
1. Archivo de configuración
SpringBoot admite varias formas de configuración:
application.propertiesapplication.yml- Variables de entorno
- Argumentos de línea de comandos
Ejemploapplication.properties:
Ejemplo
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
2. Configuración para múltiples entornos
Se pueden crear diferentes archivos de configuración para distintos entornos:
application-dev.properties: entorno de desarrolloapplication-prod.properties: entorno de producción
Mediantespring.profiles.activese especifica el entorno activo:
Ejemplo
Acceso a datos con SpringBoot
1. Usar Spring Data JPA
Agregar la dependencia:
Ejemplo
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Definir la clase de entidad:
Ejemplo
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// getters and setters
}
Crear la interfaz Repository:
Ejemplo
List<User> findByName(String name);
}
Usar en la capa de servicio:
Ejemplo
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> getUsersByName(String name) {
return userRepository.findByName(name);
}
}
Mejores prácticas de SpringBoot
- Arquitectura por capas: seguir la estructura de capas Controller-Service-Repository
- Manejo de excepciones: usar
@ControllerAdvicemanejo global de excepciones - Registro de logs: usar SLF4J para registrar logs
- Pruebas unitarias: escribir pruebas suficientes para la lógica de negocio
- Documentación de API: integrar Swagger para generar documentación de API
Ejemplo: Manejo global de excepciones
Ejemplo
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<ErrorResponse> handleResourceNotFound(ResourceNotFoundException ex) {
ErrorResponse error = new ErrorResponse(
"NOT_FOUND",
ex.getMessage()
);
return new ResponseEntity<>(error, HttpStatus.NOT_FOUND);
}
}
Temas avanzados de SpringBoot
- Spring Security: autenticación y autorización
- Spring Cloud: arquitectura de microservicios
- Spring Batch: procesamiento por lotes
- WebFlux: programación reactiva
- Integración con Docker: despliegue mediante contenedores
SpringBoot, al simplificar la configuración y ofrecer funciones listas para usar, mejora en gran medida la eficiencia del desarrollo de aplicaciones Java. Es uno de los frameworks indispensables en el desarrollo moderno de Java.
Otras extensiones
Bibliotecas comunes de Java