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