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。
相关推荐
cas-client-autoconfig-support, Apereo Java客户端支持基于注释的配置 cas-client-autoconfig-support 为CAS Java客户端提供基于注释的配置支持的库,这个项目是作为Unicon的开源支持程序的一部
<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的安装,编译,解析用于...
2. AutoConfig简介:介绍AutoConfig的基本概念和作用,以及如何使用它来管理EBS系统配置。 3. AutoConfig特性:讨论了AutoConfig的主要功能,如自动同步上下文文件和系统配置。 4. AutoConfig工作原理:解释了Auto...
交叉编译Qt5.14.2 configure参数脚本
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
AutoConfig 使用了一个上下文文件来维护关键的配置文件。一个上下文文件就是一个 XML 文件,在 $APPL_TOP/admin 目录下,进行集中式的存储。AutoConfig 读取 XML 文件,并且创建所有的 AutoConfig 管理配置文件。 ...
当遇到Windows 7无线服务“WLAN AutoConfig”无法开启的问题时,首先应该检查注册表中的相关配置是否正确,然后尝试使用命令提示符重置Winsock目录。通过上述步骤通常可以有效解决问题,确保无线网络连接恢复正常。...
Autoconfig FAQ (Doc ID 218089.1)
- 需要配置服务器将 `.pac` 文件映射到 MIME 类型 `application/x-ns-proxy-autoconfig`。 - 如果使用的是Netscape服务器,编辑 `config` 目录下的 `mime.types` 文件。 - 如果使用 Apache、CERN 或 NCSA 服务器,...
在"CS_AutoConfig_Demo"的压缩包中,很可能是包含了一个使用C#和Autofac或者其他类似的DI框架实现自动装配的示例项目。通过查看源代码,我们可以更深入地学习如何在实际应用中设置和使用自动装配。这个DEMO可能包括...
Using AutoConfig to Manage System Configurations with Oracle Applications 11i (Doc ID 165195.1)
Customizing an AutoConfig Environment (Doc ID 270519.1)