Hasor 使用环境变量

2018-10-08 09:17 更新

配置 Hasor 的环境变量有很多渠道,最简单的就是像配置 JAVA_HOME 一样配置一个系统环境环境变量。Hasor 的环境变量列表中是包含系统环境变量的。为了方便大家记忆,下面列了一个清单。表示属于 Hasor 环境变量范畴的都有哪些:

  • 1.操作系统的环境变量,例如:JAVA_HOME or System.getenv()
  • 2.JVM的启动参数,例如:java xxxx -Dvar=...
  • 3.Java的属性,例如:System.getProperties()
  • 4.Hasor的 env.config 属性文件
  • 5.Hasor配置文件(含静态配置文件)中的 hasor.environmentVar 配置节点。

下面我们主要讲解 hasor.environmentVar 节点的配置方法,以及如何读取到环境变量。下面两个环境变量配置的骨架您可以根据实际情况自由选择:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor.environmentVar>
        ...
    </hasor.environmentVar>
</config>

or

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor>
        <environmentVar>
            ...
        </environmentVar>
    </hasor>
</config>


第一个例子


第一个环境变量:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor.environmentVar>
        <MY_VAR>Hello Word</MY_VAR>
    </hasor.environmentVar>
</config>


在项目中读取这个环境变量:

AppContext appContext = ...
Environment env = appContext.getEnvironment();
System.out.println(env.evalString("%MY_VAR%"));


在 Hasor 中读取环境变量目前您不可以通过类似 xx.getVar("MY_VAR") 这种 API 来获取,您必须通过表达式获取。环境变量表达式的写法是:%<var name>%

环境变量表达式


例1:引用其它环境变量

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor.environmentVar>
        <MY_VAR>Hello Word , this is my JAVA_HOME : %JAVA_HOME%</MY_VAR>
    </hasor.environmentVar>
</config>


MY_VAR 的输出结果是:Hello Word , this is my JAVA_HOME : xxxxxx

例2:引用多个环境变量

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor.environmentVar>
        <MY_NAME>zyc</MY_NAME>
        <MY_AGE>100</MY_>
        <MY_VAR>my name is : %MY_NAME% , age is %MY_AGE%</MY_VAR>
    </hasor.environmentVar>
</config>


MY_VAR 的输出结果是:my name is : zyc , age is 100

例3:动态覆盖

现在我们在 例2 的基础上不做任何代码变化,只是在 jvm 启动时增加一个参数:-DMY_NAME=ccc,在看输出结果就变成了:my name is : ccc , age is 100

例4:代码中使用环境变量表达式:

AppContext appContext = ...
Environment env = appContext.getEnvironment();
System.out.println(env.evalString("i say %MY_VAR%."));


约定


本质上 Hasor 对于环境变量的定义是不区分大小写的,您可以在 environmentVar 节点中定义全大写环境变量名,也可以是全小写,甚至大小写混运用。但是这样做之后 xml 是无法检测出任何错误,但是 Hasor 框架在加载您的配置文件时会把它们统一做大写化转换,进而导致您的环境变量配置失效。所以我们做出君子约定。

  • 环境变量名,要求全部必须大写


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号