Spring Boot Configuration Essentials: application.properties vs application.yml
In Spring Boot, both application.properties and application.yml are configuration files used to define application settings, but they differ mainly in syntax and structure. Here’s a detailed comparison to help you understand their essentials: 1. File Format application.properties: A key-value pair format, where each property is defined on a new line. A simple and widely used […]
Artikel oleh Wayan · Sumber: Kode Java ↗
Terjemahan artikel ini belum tersedia. Isi asli ditampilkan.
In Spring Boot, both application.properties and application.yml are configuration files used to define application settings, but they differ mainly in syntax and structure. Here’s a detailed comparison to help you understand their essentials:
1. File Format
application.properties:
- A key-value pair format, where each property is defined on a new line.
- A simple and widely used format for configuration files.
Example:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=admin
spring.datasource.password=secret
application.yml:
- A hierarchical data format popular for its readability, using indentation to denote levels.
- Based on YAML syntax, it is more concise for complex hierarchical configurations.
Example:
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: admin
password: secret
2. Structure and Readability
application.properties: Flat structure; can get lengthy and harder to read with nested configurations.application.yml: More concise and easier to maintain hierarchical data (e.g., grouping related properties).
For instance:
- Nested configuration in
application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=admin
spring.datasource.password=secret
spring.jpa.hibernate.ddl-auto=update
- Nested configuration in
application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: admin
password: secret
jpa:
hibernate:
ddl-auto: update
3. Multi-Profile Support
- Both formats support profiles (e.g.,
application-dev.propertiesorapplication-dev.yml). - However, in
application.yml, profiles are defined more elegantly usingspring.profiles.
Example in application.properties:
# application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/devdb
Example in application.yml:
spring:
profiles:
active: dev
---
spring:
profiles: dev
datasource:
url: jdbc:mysql://localhost:3306/devdb
The --- in YAML separates different profiles, while spring.profiles specifies the active one.
4. Comments
application.properties: Use#for single-line comments.
Example:
# This sets the server's port
server.port=8080
application.yml: Also uses#for comments.
Example:
# This sets the server's port
server:
port: 8080
5. Tools and Validation
- YAML syntax errors (like incorrect indentation) are harder to debug compared to
properties. - Most IDEs (like IntelliJ IDEA) provide excellent support for both formats, with syntax highlighting and validation tools.
6. When to Use Which?
- Use
application.properties:- If you prefer simplicity and are comfortable with key-value pairs.
- For flat and straightforward configurations.
- Use
application.yml:- If you want a more structured and readable format.
- For more complex hierarchical configurations or when working with deeply nested values.
7. Mixing Both
- Spring Boot supports both
application.propertiesandapplication.ymlin the same project, but it’s recommended to stick to one for consistency. - If both exist,
application.propertiestakes precedence overapplication.yml(as per Spring Boot’s default property source order).
Summary Table:
| Aspect | application.properties | application.yml |
|---|---|---|
| Format | Key-value pair | Hierarchical YAML format |
| Readability | Harder for nested values | Easy to read and maintain with indentation |
| Profiles | Separate files for each profile | Inline profiles with --- separator |
| Error handling | Simple; less prone to errors | Easy to misconfigure due to indentation |
| Preference | Flat structure | Complex or hierarchical configuration |
