Ruang penulis
← Kembali ke jurnal
Spring Boot

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 […]

DWayan · 08 Jul 2025 · 3 menit baca

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.properties or application-dev.yml).
  • However, in application.yml, profiles are defined more elegantly using spring.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.properties and application.yml in the same project, but it’s recommended to stick to one for consistency.
  • If both exist, application.properties takes precedence over application.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
← Jelajahi catatan lainnya