为什么使用Autoconfig
在一个应用中,我们总是会遇到一些参数,例如:
- 数据库服务器IP地址、端口、用户名;
- 用来保存上传资料的目录。
- 一些参数,诸如是否打开cache、加密所用的密钥名称等等。
这些参数有一个共性,那就是:它们和应用的逻辑无关,只和当前环境、当前系统用户相关。以下场景很常见:
- 在开发、测试、发布阶段,使用不同的数据库服务器;
- 在开发阶段,使用Windows的A开发者将用户上传的文件存放在d:\my_upload目录中,而使用Linux的B开发者将同样的文件存放在/home/myname/my_upload目录中。
- 在开发阶段设置cache=off,在生产环境中设置cache=on。
- 很明显,这些参数不适合被“硬编码”在配置文件或代码中。因为每一个从源码库中取得它们的人,都有可能需要修改它们,使之与自己的环境相匹配, autoconfig就是很好的选择。
引入插件
在pom.xml
中引入插件,下面为多环境配置
1 | <plugin.autoconfig.version>1.2</plugin.autoconfig.version> |
配置
在src/main/resources
下创建目录Meta-INF/autoconfig
,在目录下创建文件auto-config.xml
, 下面是我的配置(依个人而定):
1 | <?xml version="1.0" encoding="UTF-8"?> |
使用
在上一步中可以看到antx将会替换五个文件,下面是其中一个文件的配置applicationContext-redis.xml
:
1 | <?xml version="1.0" encoding="UTF-8"?> |
在项目
mvn clean install
的时候,antx会自动替换它所包含的文件,可以再target
目录下查看指定的文件是否被替换成功