We can use the environment variable SPRING_APPLICATION_JSON
with a JSON value as configuration source for our Grails 3 application. The JSON value is parsed and merged with the configuration. Instead of the environment variable we can also use the Java system property spring.application.json
.
Let's create a simple controller that reads the configuration property app.message
:
// File: grails-app/controllers/mrhaki/grails/config/SampleController.groovy package mrhaki.grails.config import org.springframework.beans.factory.annotation.Value class MessageController { @Value('${app.message}') String message def index() { render message } }
Next we start Grails and set the environment variable SPRING_APPLICATION_JSON
with a value for app.message
:
$ SPRING_APPLICATION_JSON='{"app":{"message":"Grails 3 is Spring Boot on steroids"}}' grails run-app | Running application... Grails application running at http://localhost:8080 in environment: development
When we request the sample
endpoint we see the value of app.message
:
$ http -b :8080/message Grails 3 is Spring Boot on steroids $
If we want to use the Java system property spring.application.json
with the Grails command we must first configure the bootRun
task so all system properties are passed along:
// File: build.gradle ... bootRun { systemProperties System.properties } ...
With the following command we pass the configuration as inline JSON:
$ grails -Dspring.application.json='{"app":{"message":"Grails 3 is Spring Boot on steroids"}}' run-app | Running application... Grails application running at http://localhost:8080 in environment: development
Written with Grails 3.1.8.