redwhite
redwhite

Reputation: 465

How to specify an external application.yml in spring with profiles

From the spring documentation http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-yaml i see that an external YAML file is possible.

I was able to use a PropertyPlaceholderConfig FileSystem resourse to load in yaml, but it did not honor the active profile.

I saw for application.properties you can use @PropertySource, but that does not work for YAML according to the docs.

So bottom line question: How do a specify an application.yml in a profile aware fashion in Spring4/spring boot.

Note: It works in src/main/resources/application.yml

Upvotes: 17

Views: 36477

Answers (1)

redwhite
redwhite

Reputation: 465

In order to specify an external profile aware .yml file the SPRING_CONFIG_LOCATION and SPRING_PROFILES_ACTIVE system variables can be used.

JAVA_OPTS example

-Dspring.profiles.active=dev -Dspring.config.location=file:C:/application.yml

This will allow you to have provide multiple profiles inside of a YML file and let spring do the heavy lifting of evaluating the correct properties:

spring:
  profiles: dev
someprop: devprop
---
spring:
  profiles: test
someprop: testprop

Upvotes: 24

Related Questions