Curso de Spring Boot
Las aplicaciones reales necesitan configuración flexible.
Por ejemplo:
- base de datos diferente en desarrollo y producción
- activar logs en desarrollo
- cambiar puertos
- configurar seguridad
- permitir acceso desde otros dominios
Spring Boot facilita todo esto mediante:
- archivos de configuración
- perfiles
- variables de entorno
14.1 Archivo de configuración
El archivo principal es:
1application.properties
o
1application.yml
Se encuentra en:
1src/main/resources
14.2 Ejemplo de configuración
1server.port=8081 2 3spring.datasource.url=jdbc:postgresql://localhost:5432/appdb 4spring.datasource.username=postgres 5spring.datasource.password=1234 6 7spring.jpa.show-sql=true
Explicación
| propiedad | función |
|---|---|
| server.port | puerto del servidor |
| spring.datasource.url | conexión DB |
| spring.jpa.show-sql | mostrar SQL |
14.3 Usar YAML en lugar de properties
Spring Boot también permite usar YAML.
Archivo:
1application.yml
Ejemplo
1server: 2 port: 8081 3 4spring: 5 datasource: 6 url: jdbc:postgresql://localhost:5432/appdb 7 username: postgres 8 password: 1234 9 10 jpa: 11 show-sql: true
YAML es más legible cuando la configuración es grande.
14.4 Perfiles (profiles)
Los perfiles permiten tener configuraciones diferentes.
Por ejemplo:
1dev 2test 3prod
14.5 Archivos de perfil
Podemos crear:
1application-dev.properties 2application-prod.properties
Ejemplo
application-dev.properties
1server.port=8080 2spring.jpa.show-sql=true
application-prod.properties
1server.port=80 2spring.jpa.show-sql=false
14.6 Activar perfil
En application.properties:
1spring.profiles.active=dev
O en terminal:
1java -jar app.jar --spring.profiles.active=prod
14.7 Variables de entorno
En producción normalmente no se guardan contraseñas en el código.
Se usan variables de entorno.
Ejemplo
1spring.datasource.password=${DB_PASSWORD}
Spring tomará el valor desde el sistema.
14.8 Leer propiedades en el código
Podemos acceder a propiedades usando @Value.
Ejemplo
1@Value("${server.port}") 2private String port;
Esto lee el valor configurado.
14.9 Usar @ConfigurationProperties
Para configuraciones grandes es mejor usar esta anotación.
Ejemplo
1@ConfigurationProperties(prefix="app") 2public class AppConfig { 3 4 private String name; 5 private String version; 6 7}
Configuración
1app.name=MiApp 2app.version=1.0
Spring inyectará automáticamente los valores.
14.10 Configurar CORS
Cuando usamos frontend separado (Angular, React) puede aparecer un error CORS.
Ejemplo:
1Angular → localhost:4200 2Spring Boot → localhost:8080
El navegador bloquea la petición.
Solución
1@Configuration 2public class CorsConfig { 3 4 @Bean 5 public WebMvcConfigurer corsConfigurer() { 6 7 return new WebMvcConfigurer() { 8 9 @Override 10 public void addCorsMappings(CorsRegistry registry) { 11 12 registry.addMapping("/**") 13 .allowedOrigins("http://localhost:4200") 14 .allowedMethods("*"); 15 16 } 17 18 }; 19 20 } 21 22}
14.11 Configurar logs
Los logs ayudan a detectar problemas.
Spring Boot usa Logback.
Configuración simple
1logging.level.root=INFO 2logging.level.org.springframework=DEBUG
Usar logs en código
1import org.slf4j.Logger; 2import org.slf4j.LoggerFactory; 3 4private static final Logger log = 5 LoggerFactory.getLogger(UserService.class); 6 7log.info("Usuario creado");
14.12 Cambiar puerto del servidor
Por defecto Spring Boot usa:
18080
Podemos cambiarlo.
Ejemplo
1server.port=9090
Ahora la aplicación estará en:
1http://localhost:9090
14.13 Configuración por entorno
Ejemplo típico real:
Desarrollo
1application-dev.properties
1spring.jpa.show-sql=true 2logging.level.root=DEBUG
Producción
1application-prod.properties
1spring.jpa.show-sql=false 2logging.level.root=INFO
14.14 Buenas prácticas
No guardar contraseñas en código
Usar variables de entorno.
Usar perfiles
Separar dev y prod.
Usar logs adecuados
No mostrar demasiados logs en producción.
- Loading...