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.
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
Try adding a vm argument in the run configuration:
-Dspring.profiles.active=dev
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With