问题
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.
回答1:
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
回答2:
Try adding a vm argument in the run configuration:
-Dspring.profiles.active=dev
回答3:
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.
回答4:
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