包含数组

时间:2017-02-21 17:00:38

标签: spring grails spring-boot configuration

我通过将spring.application.json设置为系统属性,将Grails 3 Elasticsearch插件与Springs外部JSON配置一起使用。 这些属性在应用程序中可用,但我找不到正确初始化数组的方法。

我要完成的是覆盖hosts中指定的application.yml属性的默认值:

environments:
  development:
    elasticSearch:
      client:
        hosts:
          - {host: "myhost.com", port: 9300}
          - {host: "anotherhost.com", port: 9300}

我从命令行设置属性如下:

-Dspring.application.json={"environments":{"development":{"elasticSearch":{"client":{"hosts":[{"host":"override1.com", "port":9000},{"host":"override2.com", "port":9100}]}}}}}

我希望environments.development.elasticSearch.client.hosts包含一个数组,就像从application.yml初始化时一样,但事实上environments.development.elasticSearch.client包含host[0]host[1],其中每个包含主机和端口。 host文件中的yml数组仍然存在。

如何使用命令行实现与application.yml文件相同的行为?

1 个答案:

答案 0 :(得分:1)

我相信你可以这样做,就像使用列表在.properties文件中设置一样:

-Denvironments.developmet.elasticSearch.client.hosts={"host":"override1.com", "port":9000},{"host":"override2.com", "port":9100}

我相信您也可以将其作为环境变量......

set ENVIRONMENTS_DEVELOPMENT_ELASTICSEARCH_CLIENT_HOSTS='{"host":"override1.com", "port":9000},{"host":"override2.com", "port":9100}'

根据您所在的shell,操作系统等,可能需要对这些部分进行部分引用。