java如何加载自定义应用程序XXX。yml文件从其他应用程序中删除XXX。不使用概要文件注释解决方案的spring boot中的yml
我想加载单个应用程序xxx。yml适用于三个应用程序xxx中的生产环境。yml这是由环境变量(在我的例子中是its)国家的值决定的
说明:
我的SpringBootMicroService(RESTAPI)部署在不同国家的不同aws地区
我在资源文件夹下添加了3个不同的yml/properties文件,例如:
适用于美国>;application-usa.yml强>
适用于德国>;应用程序管理器。yml强>
适用于印度>;application-ind.yml强>
(所有三个yml文件都包含相似的属性,但其值不同)
因此,让我们说,如果环境。变量country==USA则应加载application-USA.yml文件,但不加载所述应用程序xxx的其余部分。yaml文件 等等
因此,最后,根据env变量country的值,上述3个yaml文件中只能加载一个
那么我们如何才能做到这一点呢
# 1 楼答案
下面是一个使用gradle构建工具的可能解决方案。您必须在资源目录中创建三个目录,如美国、德国和印度,并将这些yml文件保存在每个目录下。在应用程序构建时,您必须将特定的yml文件从国家(美国、德国或印度)目录复制到资源目录。要在生成时标识特定国家,必须将国家名称作为参数传递,如下所示:
下面是将特定yml文件从国家/地区目录复制到资源目录的示例gradle代码:
# 2 楼答案
Spring支持
spring.profiles.active
属性,以在加载应用程序时激活属性。在环境中运行应用程序时,只需传递此属性的值JVM系统参数
配置文件名称也可以通过JVM系统参数传入。作为参数传递的配置文件名称将在应用程序启动期间激活:
环境变量
在Unix环境中,还可以通过环境变量激活配置文件:
# 3 楼答案
您可以选择应用程序。根据环境变量或-D编译标志的属性文件
从Spring文档中:
对于这一点,以及如何更改外部化配置的其他一些选项,请查看以下内容: https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config