环境变量和系统属性通常具有一些限制,这意味着无法使用某些属性名称。为了解决这个问题,Spring Boot允许您将属性块编码为单个JSON结构。
    当您的应用程序启动时,任何spring.application.jsonSPRING_APPLICATION_JSON属性都会被解析并添加到Environment中。
    例如,在*NIX shell的命令行中提供的SPRING_APPLICATION_JSON属性,可以作为环境变量使用:

    1. $ SPRING_APPLICATION_JSON='{"acme":{"name":"test"}}' java -jar myapp.jar

    在前面的示例中,Spring的 Environmentacme.name=test结尾。
    相同的JSON也可以被当做系统属性提供:

    1. $ java -Dspring.application.json='{"acme":{"name":"test"}}' -jar myapp.jar

    或者,您可以使用命令行参数的形式来提供JSON:

    1. $ java -jar myapp.jar --spring.application.json='{"acme":{"name":"test"}}'

    如果要部署到经典的应用程序服务器(Application Server)上,则还可以使用名为java:comp/env/spring.application.json的JNDI变量。

    info.svg 尽管来自JSON的null值将添加到生成的属性源中,但是PropertySourcesPropertyResolver将值为null的属性视为缺失值。这意味着JSON无法使用null值覆盖低阶属性源中的属性。