Reputation: 3064
In my project I want to use environment specific property file. For example if I am running it into development it should use application.dev.properties, for production it should use application.prod.properties and so on.
I have below two files in my resources folder.
I have one properties like below in each file.
For Prod
server.database.host=192.168.1.1
For Dev
server.database.host=192.168.12.125
And I have a class like below
public class DataSource {
@Value(${server.database.host})
String host;
The above code always takes prod setting (application.properties) file even though I supply proper argument for dev like --spring.profiles.active=dev
Below is the command I am using to load the dev properties file.
java -jar myjar.jar --spring.profiles.active=dev
It also prints that active profile is dev but it always connect to prod db.
Upvotes: 20
Views: 38025
Reputation: 195
You are supposed to specify which profile to run with as follows:
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
Also see documentation: https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-profiles.html
Upvotes: 6
Reputation: 665
Try adding a vm argument in the run configuration:
-Dspring.profiles.active=dev
Upvotes: 11
Reputation: 13855
If running on Eclipse or STS, then use following steps:
Right click on project -> Run As -> Run Configuration.
In the new window, select spring boot application on left side, and add details on the right and in the profile dropdown, select dev.
Click apply and run.
Upvotes: 2
Reputation: 7051
A few issues I noticed:
@Value
property name should be a String
like @Value("${server.database.host}")
application-{profile}.properties
format, e.g. application-dev.properties
-D
like java -Dspring.profiles.active=dev -jar app.jar
Upvotes: 37