Spring Profiles
Enterprise applications must reliably execute precisely within multiple discrete environments inherently:
- Local Dev: Uses a desktop H2 memory database structure safely.
- Staging: Uses an AWS QA structural database cleanly.
- 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.
- In application.properties:
spring.profiles.active=dev - As an OS Command Line argument:
java -jar app.jar --spring.profiles.active=prod - As a System Environment Variable:
SPRING_PROFILES_ACTIVE=prod