首页 > 解决方案 > SpEL 可以直接传递环境变量还是总是需要某种形式的属性文件?

问题描述

我们构建微服务,我正在研究一种为它们生成文档的通用方式。这造成了一种情况,我需要在我们的所有服务中设置一个静态变量,但根据服务部署的环境有两个可能的值。因此我想直接基于环境变量而不是注入一个值通过我的 Application.yml 文件,它是各种配置文件,就像我通常会做的那样。有没有办法做到这一点?

这是我想象的一个例子(如果它是 Application.yml 中的常规属性,它的语法类似于它的样子):

@Value("#{enviromentProperties['environment'].equals['production'] ? jupiter : mars}")
private String APIGatewayHostname;

为了清楚起见,我们有在同一个代理后面部署多个配置文件的情况。因此,我们希望主机名引用成为代理主机,这样人们就不会尝试直接调用服务,因为这是不可能的。无论我们在任何给定时间运行哪些配置文件,每个环境只有一个代理,因此我希望使用环境变量而不是属性。此外,此代理实际上并不是服务本身设计的一部分,因此将其存储在 Application.yml 文件中的多个配置文件中似乎是违反直觉的。

注意:如果有其他更好的方法来实现这一点,请随时告诉我:)

标签: javaspring-bootmicroservicesspring-el

解决方案


推荐阅读