1.autoconfig介绍
在一个Java应用中(例如web应用或包含main方法的其他应用)通常有很多参数需要配置,例如数据库ip和端口、用户名等,这些参数有的在二方库jar包中,有的在应用自身的war包或jar包中。这些参数的取值通常随着运行环境的变化而变化,例如在开发环境、测试环境、部署环境中有不同的一组配置。同一个二方库中的参数,在依赖它的A应用和B应用中也可能需要有不同的参数值。这里不讨论应用部署后的动态参数配置问题。
autoconfig是阿里的宝宝同学开发的自动化参数配置工具,举个具体的例子,有个二方库C.jar,有A和B两个web应用依赖(使用)该二方库,该二方库在A、B两个应用中的参数配置是不同的,同时这两个应用自身也有一些参数需要配置,例如web.xml中的一些参数。此外对A应用和C.jar,在开发、测试和部署阶段,参数配置都有可能不同。autoconfig对以上场景都有很好的支持,能自动将参数配置自动注入到war包和jar包中,具体介绍见AutoConfig工具使用指南。下面只讲在多个web应用下一些需要注意的问题。
2.多应用下的使用
如果采用maven构建,autoconfig在mvn package阶段处理配置项。多个不同的web应用缺省使用一个属性文件(缺省为home目录下的antx.properties)。为了减少相互间的影响,每个web应用最好采用独立的属性文件,各自维护,对公有的部分可独立出来,在每个应用的属性文件中包含进来即可。另外开发环境、测试环境、生产环境的参数配置通常是不一样的,所以每个web应用需要有3个autoconfig属性文件,分别为antx.properties.dev(用于开发环境)、antx.properties.test(用于测试环境)、antx.properties.deploy(用于生产境)。
这三个属性文件存放在web应用的src/main/webapp/META-INF/autoconf目录下,autoconfig的auto-config.xml文件也在该目录,如下图。需要进行参数配置的二方库在相关的目录中也有auto-config.xml文件,但无属性文件。
pom文件修改:
使用autoconfig需要修改web应用的pom文件,二方库pom不需要修改。如下:
a)在<properties>中加入如下内容:
<!-- autoconfig属性文件,缺省为开发环境autoconfig属性文件名-->
<autoconfig.properties>antx.properties.dev</autoconfig.properties>
b)加入如下内容,分别定义三个profile:dev(开发环境)、test(测试环境)、deploy(部署环境)对应的autoconfig属性文件名。在eclipse maven build或命令行运行mvn命令时要指定相应的profile,这样就实现了开发、测试、部署阶段使用不同的属性文件。mvn命令不指定profile则使用开发环境的autoconfig属性文件。
<profile>
<id>dev</id>
<properties>
<autoconfig.properties>antx.properties.dev</autoconfig.properties>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<autoconfig.properties>antx.properties.test</autoconfig.properties>
</properties>
</profile>
<profile>
<id>deploy</id>
<properties>
<autoconfig.properties>antx.properties.deploy</autoconfig.properties>
</properties>
</profile>
c)在<plugins>中加入autoconfig插件,如下:
<plugin>
<groupId>com.alibaba.citrus.tool</groupId>
<artifactId>autoconfig-maven-plugin</artifactId>
<version>1.2</version>
<configuration> <userProperties>${basedir}/src/main/webapp/META-INF/autoconf/${autoconfig.properties}</userProperties>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>autoconfig</goal>
</goals>
</execution>
</executions>
</plugin>
在上面的配置中,userProperties属性指定autoconfig属性文件全路径。basedir是maven内置属性,表示pom文件所在目录,每个应用的pom文件肯定是位于不同的目录,这样就实现了每个应用的属性文件分开。
另外:AutoConfig是针对目标文件(war、jar包)的配置工具,对web应用就是针对war包中的文件和war包中的jar包注入参数配置。在eclipse中通过maven在jetty中运行时,goal目标要是jetty:run-war,不能为jetty:run。
相关推荐
<artifactId>autoconfig-demo <version>0.0.1-SNAPSHOT <name>autoconfig-demo <description>Demo project for Spring Boot <java.version>1.8 <groupId>org.springframework.boot ...
用于autoconfig的安装,编译,解析用于eclip的安装,编译,解析用于eclip的安装,编译,解析用于eclip的安装,编译,解析用于eclip的安装,编译,解析用于eclip的安装,编译,解析用于eclip的安装,编译,解析用于...
cas-client-autoconfig-support, Apereo Java客户端支持基于注释的配置 cas-client-autoconfig-support 为CAS Java客户端提供基于注释的配置支持的库,这个项目是作为Unicon的开源支持程序的一部
交叉编译Qt5.14.2 configure参数脚本
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
EBS12-AutoConfig-EDU41DEY
Autoconfig FAQ (Doc ID 218089.1)
Using AutoConfig to Manage System Configurations with Oracle Applications 11i (Doc ID 165195.1)
Customizing an AutoConfig Environment (Doc ID 270519.1)
Windows 7无线服务“Wlan Autoconfig”无法开启
IMAP 自动配置 检测电子邮件连接设置 用法 需要 imap-autoconfig var autoconfig = require("imap-autoconfig"); 自动配置对象 ...使用 autoconfig.detect 检查 IMAP 连接设置 detector.detect(add
还是非常好的 外国资料 希望能对大家有用
采用C#实现的自动装配实现, 参考DEMO