使用环境变量

场景描述

在java中调用外部服务时,开发环境和正式环境使用2个不同的地址

实现思路

使用环境变量实现。在dev.def.xml文件中定义开发环境中使用的环境变量,在production.def.xml文件中定义正式环境中使用的环境变量

实现步骤

1. 定义开发环境变量

  • 在应用中使用,定义在service/main/deploy/dev.def.xml文件中
  • 在组件中使用,定义在service/comp/组件名称/deploy/dev.def.xml文件中
  • 在properties中定义property,设置name和value属性

2. 定义正式环境变量

  • 在应用中使用,定义在service/main/deploy/production.def.xml文件中
  • 在组件中使用,定义在service/comp/组件名称/deploy/production.def.xml文件中
  • 将dev.def.xml文件中定义的环境变量复制过来,name属性不变,修改value属性

3. 在java中获取环境变量

使用本地IDE,需要重新连接云端,才能获取环境变量

环境变量名生成规则

  • 在service/main/deploy/*.def.xml文件中定义的环境变量,前面加MAIN_
  • 在service/comp/组件名称/deploy/*.def.xml文件中定义的环境变量,前面加COMP组件名称
  • 名称全部变成大写字母

例如:在service/comp/basedata/deploy/dev.def.xml文件中定义

<property name="extUrl" value="开发环境"/>

生成的环境变量名称是:COMP_BASEDATA_EXTURL

在java代码中,使用System类的静态方法getenv()和getProperty()获取

之所以两个方法都需要调用,是因为在云端运行时(包括开发环境和正式环境),使用getProperty()获取,在本地IDE运行时,使用getenv()获取

4. 运行时的效果

打开日志跟踪,在云IDE中预览,查看Tomcat的输出

发布后,正式运行,在池中查看Tomcat的输出

results matching ""

    No results matching ""

    results matching ""

      No results matching ""