Skip to main content

Spring Profiles

Enterprise applications must reliably execute precisely within multiple discrete environments inherently:

  1. Local Dev: Uses a desktop H2 memory database structure safely.
  2. Staging: Uses an AWS QA structural database cleanly.
  3. Production: Uses explicitly secure Production tokens.

Instead of overriding properties explicitly upon every codebase deploy, developers employ Spring Profiles.

Establishing Profile Files

You simply create dedicated properties file variants formatted strictly as application-{profileName}.properties.

application-dev.properties

spring.datasource.url=jdbc:h2:mem:testdb
app.stripe.api-key=sk_test_12345

application-prod.properties

spring.datasource.url=jdbc:mysql://my-aws-rds.com/proddb
app.stripe.api-key=sk_live_98765

Activating a Profile

By default, an implicitly unnamed application.properties executes on boot. To instruct Spring explicitly to activate the dev profile internally instead, you parse the active tag.

  1. In application.properties: spring.profiles.active=dev
  2. As an OS Command Line argument: java -jar app.jar --spring.profiles.active=prod
  3. As a System Environment Variable: SPRING_PROFILES_ACTIVE=prod