← Back to list

Spring Boot: Difference Between application.yml vs application.properties

If you’re new to YAML, it might feel weird at first — like riding a bicycle after years of driving a car. But once you get the hang of it…

M Business Solutions in Stackademic · 2024-10-05 18:36 · 0 claps · 3.1 min read paywalled
#spring-boot #application-properties #applicationyml
Open on Medium ↗

Spring Boot: Difference Between application.yml vs application.properties

If you’re new to YAML, it might feel weird at first — like riding a bicycle after years of driving a car. But once you get the hang of it, you’ll love how clean and organized it is! 🚴‍♂️

Image generated by DALL-E

Image generated by DALL-E

When developing a Spring Boot application, one of the essential tasks is configuration. Spring Boot offers two common formats for external configuration: **application.properties and `application.yml`** (YAML). Both serve the same purpose—configuring application settings—but they differ in structure and style.

In this blog, we’ll explore the differences between application.yml and application.properties, their respective strengths and weaknesses, and when to use each. Let’s dive in!

What Are application.properties and application.yml?

application.properties

application.properties is the more traditional and straightforward format. It uses key-value pairs to define configurations.

Example:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=rootpassword

In this format, each configuration is represented by a single line where the key is followed by the value. Properties files are simple to read and commonly used across many Java projects.

application.yml

application.yml uses YAML (Yet Another Markup Language) format. YAML is hierarchical and more human-readable, especially when dealing with complex configurations.

Example:

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: rootpassword

YAML files use indentation to represent the relationship between keys and values, making them visually organized.

Key Differences Between application.properties and application.yml

1. Readability and Structure

  • Properties:
  • Simple and linear.
  • Ideal for basic configurations.
  • Keys are flattened, which can make hierarchical configurations harder to read.
  • YAML:
  • More structured and organized.
  • Supports nested values and hierarchical data, which improves readability for complex configurations.

Example of hierarchical data in properties:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=rootpassword

Same in YAML:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: rootpassword

YAML’s structured approach makes it easier to identify groups of related configurations.

2. Syntax

  • Properties: Each configuration key-value pair is defined on a single line using = or : as the delimiter.
  • YAML: YAML uses indentation to represent nested configurations, and colons : separate keys from values. This hierarchy is YAML’s strength for more complex setups.

Example of multiple properties:

  • In properties:
logging.level.root=INFO
logging.level.org.springframework=DEBUG

In YAML:

logging:
  level:
    root: INFO
    org.springframework: DEBUG

3. Comments

  • Properties: Supports inline comments using the # character.
# Set the server port
server.port=8080

. YAML: Comments also use the # character.

# Set the server port
server:
  port: 8080

Both formats handle comments similarly.

4. Complex Data Structures

  • Properties: Managing lists or complex data types in .properties is difficult and not intuitive.
  • Example of a list in properties:
spring.datasource.servers=server1,server2,server3

YAML: YAML natively supports lists and complex structures.

Example of a list in YAML:

spring:
  datasource:
    servers:
      - server1
      - server2
      - server3

For more sophisticated configurations, YAML is much more user-friendly.

5. Multiline Values

  • Properties: Adding multiline values is awkward and error-prone.
  • Example in properties:
my.message=Hello \
           Spring Boot \
           Developers

YAML: YAML handles multiline strings naturally.

Example in YAML:

my:
  message: |
    Hello
    Spring Boot
    Developers

YAML provides a clean approach to handling multiline strings and other complex data types.

When to Use application.properties

  • Simple Configurations: If your configuration is basic with only a few properties, a properties file is sufficient.
  • Traditional Approach: For developers who prefer simplicity and have used .properties for years, the properties format remains familiar and effective.
  • IDE Autocompletion: Some developers stick with properties because many IDEs provide excellent autocompletion and validation support for this format.

When to Use application.yml

  • Complex Configurations: If your project requires more complex configurations with nesting or multiple profiles, YAML is far easier to read and manage.
  • Structured Data: YAML’s hierarchical structure is better suited for complex data structures like lists, objects, and nested keys.
  • Readability: YAML provides a cleaner and more readable format, especially for larger configuration files.

Performance and Other Considerations

  • Performance: There is no significant difference in performance between the two formats. Both are handled efficiently by Spring Boot.
  • Consistency: Stick with one format throughout the project for consistency, as using both .properties and .yml can create confusion.
  • Environment-specific Configurations: Both formats support environment-specific files (application-dev.yml, application-prod.properties), making them versatile for any deployment setup.

Conclusion

In Spring Boot, whether you choose application.properties or application.yml largely depends on personal preference and project complexity. For smaller, straightforward applications, properties can be simpler and quicker. However, for larger applications with nested configurations, yml shines with its readability and structured format.

Stackademic 🎓

Thank you for reading until the end. Before you go:


메타데이터
post_id
d476b867f5f5
slug
spring-boot-difference-between-application-yml-vs-application-properties-d476b867f5f5
url
https://blog.stackademic.com/spring-boot-difference-between-application-yml-vs-application-properties-d476b867f5f5
canonical_url
https://blog.stackademic.com/spring-boot-difference-between-application-yml-vs-application-properties-d476b867f5f5
author_url
https://medium.com/@mbusinesssolutions
status
ok
fetched_at
2026-08-05 18:45:48