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.
- application.properties (For production)
- application.dev.properties (For development)
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 aString
like@Value("${server.database.host}")
- Profile specific property files should follow
application-{profile}.properties
format, e.g.application-dev.properties
- Try passing the profile with
-D
likejava -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
来源:https://stackoverflow.com/questions/38042035/springboot-not-loading-application-dev-properties-file