Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Springboot not loading application.dev.properties file

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.

  1. application.properties (For production)
  2. 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.

like image 725
Sam Avatar asked Jun 26 '16 18:06

Sam


3 Answers

A few issues I noticed:

  1. @Value property name should be a String like @Value("${server.database.host}")
  2. Profile specific property files should follow application-{profile}.properties format, e.g. application-dev.properties
  3. Try passing the profile with -D like java -Dspring.profiles.active=dev -jar app.jar
like image 74
Kyle Anderson Avatar answered Oct 19 '22 02:10

Kyle Anderson


Try adding a vm argument in the run configuration:

-Dspring.profiles.active=dev
like image 8
abj1305 Avatar answered Oct 19 '22 02:10

abj1305


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

like image 5
hreinn Avatar answered Oct 19 '22 03:10

hreinn