4.1. 环境变量

这些位置可以成为Hasor环境变量的来源:

System.getenv()
System.getProperties()
hconfig.xml 配置文件中 hasor.environmentVar 的子节点
Hasor.create().addVariable(…)

例如:在 jvm 启动时增加一个参数:-DMY_NAME=ccc,然后在程序中得到它。

  1. AppContext appContext = ...
  2. Environment env = appContext.getEnvironment();
  3. System.out.println(env.getVariable("i say %MY_NAME%."));

提示

Hasor 对于环境变量的定义是不区分大小写的。但建议:环境变量名,要求全部必须大写。

配置文件中声明环境变量在配置文件中声明环境变量必须要在 hasor.environmentVar 节点中配置:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <config xmlns="http://www.hasor.net/sechma/main">
  3. <hasor.environmentVar>
  4. <MY_VAR>Hello Word , this is my JAVA_HOME : %JAVA_HOME%</MY_VAR>
  5. </hasor.environmentVar>
  6. </config>

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

  1. AppContext appContext = ...
  2. Environment env = appContext.getEnvironment();
  3. System.out.println(env.getVariable("MY_VAR"));

4.2. 环境变量表达式

例1:引用其它环境变量

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <config xmlns="http://www.hasor.net/sechma/main">
  3. <hasor.environmentVar>
  4. <MY_VAR>Hello Word , this is my JAVA_HOME : %JAVA_HOME%</MY_VAR>
  5. </hasor.environmentVar>
  6. </config>

MYVAR 的输出结果是:_Hello Word , this is my JAVA_HOME : xxxxxx

例2:引用多个环境变量

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <config xmlns="http://www.hasor.net/sechma/main">
  3. <hasor.environmentVar>
  4. <MY_NAME>zyc</MY_NAME>
  5. <MY_AGE>100</MY_>
  6. <MY_VAR>my name is : %MY_NAME% , age is %MY_AGE%</MY_VAR>
  7. </hasor.environmentVar>
  8. </config>

MYVAR 的输出结果是:_my name is : zyc , age is 100

4.3. 引用环境变量

前面我们讲解了 Hasor 环境变量的使用。同时我们也演示了 Hasor 环境变量和操作系统的互动,本节向您展示 Hasor 环境变量在配置文件中的应用。我们以配置数据库链接配置作为开始:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <config xmlns="http://www.hasor.net/sechma/main">
  3. <jdbcSettings>
  4. <jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver>
  5. <userName>sa</userName>
  6. <userPassword>password</userPassword>
  7. </jdbcSettings>
  8. </config>

如果我们想把数据库连接的帐号和密码剥离出来,我们可以先把帐号和密码剥离到环境变量中,接着就可以使用前面章节提到的通过系统环境变量来动态替换:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <config xmlns="http://www.hasor.net/sechma/main">
  3. <hasor.environmentVar>
  4. <JDBC_USER_NAME>sa</JDBC_USER_NAME>
  5. <JDBC_USER_PWD>password</JDBC_USER_PWD>
  6. </hasor.environmentVar>
  7.  
  8. <jdbcSettings>
  9. <jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver>
  10. <userName>${JDBC_USER_NAME}</userName>
  11. <userPassword>${JDBC_USER_PWD}</userPassword>
  12. </jdbcSettings>
  13. </config>

然后在 jvm 启动时候将 JDBC_USER_NAME 和 JDBC_USER_PWD 动态的传入给应用程序。