Sam
Sam

Reputation: 3064

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.

Upvotes: 20

Views: 38025

Answers (4)

hreinn
hreinn

Reputation: 195

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

Upvotes: 6

abj1305
abj1305

Reputation: 665

Try adding a vm argument in the run configuration:

-Dspring.profiles.active=dev

Upvotes: 11

KayV
KayV

Reputation: 13855

If running on Eclipse or STS, then use following steps:

  1. Right click on project -> Run As -> Run Configuration.

  2. In the new window, select spring boot application on left side, and add details on the right and in the profile dropdown, select dev. enter image description here

  3. Click apply and run.

Upvotes: 2

Kyle Anderson
Kyle Anderson

Reputation: 7051

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

Upvotes: 37

Related Questions