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