Spring Boot Configuration is the mechanism used to define, externalize, and manage settings that control how an application behaves across different environments without modifying source code. It relies on a “convention over configuration” approach, providing sensible defaults while allowing developers to easily override settings such as server ports, database credentials, third-party API keys, and business rules.
Different types of Spring Boot application Configurations are
1. Application Properties
The
application.properties file is the traditional, key-value-based approach to configuration in Spring Boot, typically located in the src/main/resources folder.-
Uses a flat
key=valueformat (e.g.,server.port=8080orspring.datasource.url=jdbc:mysql://...). -
Simple to read and write, making it well-suited for smaller applications or straightforward setups.
2. YAML Configuration
YAML (
application.yml or application.yaml) serves as an alternative to .properties files, using indentation to represent hierarchical data structures.-
Avoids repetitive prefix names by grouping related properties under parent keys.
-
Supports complex types natively, such as nested maps, lists, and boolean structures.
3. Custom Configuration
Custom configuration allows you to define your own application-specific properties and bind them cleanly to Java objects instead of hardcoding values.
-
@Valueannotation: Injects single configuration values directly into Spring-managed beans (e.g.,@Value("${app.jwt.secret}")). -
@ConfigurationProperties: Binds a group of related properties into a strongly typed, validated Java POJO/record, providing auto-completion and compile-time safety. -
@Configuration&@Bean: Used in Java code to instantiate and configure beans manually when auto-configuration needs customization.
4. Environment Profiles
Spring Profiles provide a way to segregate parts of the application configuration and make them available only in specific runtime environments (such as
dev, test, staging, or prod).-
Implemented using profile-specific files like
application-dev.propertiesorapplication-prod.yml. -
Activated via properties (
spring.profiles.active=dev), command-line arguments (--spring.profiles.active=prod), or OS environment variables. -
Prevents accidental deployment of testing configurations (e.g., embedded databases) into production environments.
