Hasor 不光小巧还很精良,这一片文章我们来讲一讲 “模版化配置文件”。
首先在了解模版化配置文件之前先看一下我们的实际开发中的问题。现在假设你有一个小团队,大家分别开发同一个项目的不同功能。通常情况下我们会为项目划分几个大模块,然后为每个模块建立一个自己的配置文件。或者干脆所有项目的配置都放到一个配置文件中。
在这些配置信息中一般会包涵例如:文件上传路、数据库连接、远程接口服务器地址 这些配置,这些配置通常在不同的环境下有着不同的配置值,例如:日常、测试、预发、生产。
而有些项目稍微改一下配置就回面部全非变成另外一个系统,这些配置也是跟随时机部署情况灵活改变的。
如果你开发的是更大一点的网站,css、文件上传中心、图片服务器、等等都会独立出来。当你开发完应用程序,光是在生产环境替换这些配置信息就够你忙活一阵子了。更何况如果项目分了模块,要替换的配置文件还会更多。
“模版化配置文件” 的提出是为了解决这个问题。
下面我们以 数据库连接配置为例:
<config xmlns="http://project.hasor.net/hasor/schema/main">
...
<jdbcSettings>
<jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver>
<jdbcURL>jdbc:mysql://${jdbc.database_host}:3306/${jdbc.database_name}?useUnicode=true&characterEncoding=utf-8</jdbcURL>
<userName>${jdbc.user}</userName>
<userPassword>${jdbc.password}</userPassword>
</jdbcSettings>
...
</config>
在上面这个配置中我们可以看到这样的结构“${xxxxx}” 。在 Hasor 的配置文件中,这段花括号括起来的表示的是环境变量名称。在上面这单代码中可以看到一共有 4 个环境变量配置。
${jdbc.database_host}
${jdbc.database_name}
${jdbc.user}
${jdbc.password}
接下来我们在 classpath 目录下新建一个名为 “env.config” 的文本文件。然后把上面四个配置项保存到这里。Hasor 在启动的时候会加载 “env.config” 的配置信息,然后 Hasor 会使用这个配置信息替换配置文件中的相应配置信息。
jdbc.database_host = ...
jdbc.database_name = ...
jdbc.user = ...
jdbc.password = ...
env.config 文件除了放置到 classpath 目录下还可以放到 WORK_HOME 环境变量表示的目录下也可以。如果放到 WORK_HOME 下面,您的应用程序包都不需要有任何修改了。