我通过将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
文件相同的行为?
答案 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,操作系统等,可能需要对这些部分进行部分引用。