Play Framework 一个项目支持多个系统的配置


有时候不同的系统只是数据源和一些配置信息不一样,代码其实可以用同一套。比如“小米科技财务管理系统”和“腾讯科技财务管理系统”,这两个系统只是公司不同,业务需要其实是一样的。这种情况下,可以只开发一个项目来同时支持多个不同的系统。下面我们来聊一聊怎样将一个项目配置成多个系统。

多环境的配置

Play Framework(  以下简称 Play)可以在 application.conf 文件中配置多个环境,例如:

application.name=Cool app
application.mode=dev
application.log=INFO

# Test configuration
%test.application.log=DEBUG
%test.db=mem

# Production configuration
%prod.http.port=80
%prod.application.log=INFO
%prod.application.mode=prod

其中没有“%”字符的是默认配置,带“%”的是多环境的配置。以“%test.”开头的是测试环境的配置,以“%prod.”开头的是生产环境的配置。我们也可以配置自定义的环境,比如:

%mi.application.name=MI Accounting system
%mi.http.port=80
%mi.application.log=INFO
%mi.application.mode=prod

其中“mi”是环境名,根据系统起名。

运行参数

然后在运行命令后面添加一个参数,就可以使用想要的环境来启动系统了:

play run --%mi

这个参数的格式是“–%xxxx”,其中“xxxx”是环境名,比如“mi”。

更新数据结构的时候也要带这个参数:

play evolutions:apply --%mi

注意:如果要使用 play evolutions 命令更新生产环境的数据结构的话,要把它放在 play run 命令前执行。

日志文件的配置

配置好自定义环境以后,就可以支持多系统了。但是还有一个问题需要解决,那就是日志文件名的问题。每个系统应该有自己独立的日志文件名称,比如“mi.log”。

Play 默认的日志配置文件是 conf/log4j.properties,可以使用“application.log.path”配置项来指定不同的文件,例如:

%mi.application.log.path=/log4j-mi.properties

注意:这里的 log4j-mi.properties 实际的路是 conf/log4j-mi.properties,和 application.conf 文件在同一个目录。

拆分配置文件

另外,为了便于管理多个系统的配置信息,可以通过 include 命令将不同系统的配置保存在不同的文件中:

conf/application.conf

@include.prod.licnk=prod-mi.conf
application.name=Cool app
application.mode=dev
application.log=INFO

conf/prod-mi.conf

%mi.application.name=MI Accounting system
%mi.http.port=80
%mi.application.log=INFO
%mi.application.mode=prod
%mi.application.log.path=/log4j-mi.properties


前一篇:
后一篇:

发表评论