`
顽石
  • 浏览: 164291 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

autoconfig使用

 
阅读更多

1.autoconfig介绍
   在一个
Java应用中(例如web应用或包含main方法的其他应用)通常有很多参数需要配置,例如数据库ip和端口、用户名等,这些参数有的在二方库jar包中,有的在应用自身的war包或jar包中。这些参数的取值通常随着运行环境的变化而变化,例如在开发环境、测试环境、部署环境中有不同的一组配置。同一个二方库中的参数,在依赖它的A应用和B应用中也可能需要有不同的参数值。这里不讨论应用部署后的动态参数配置问题。

  

  autoconfig是阿里的宝宝同学开发的自动化参数配置工具,举个具体的例子,有个二方库C.jar,有AB两个web应用依赖(使用)该二方库,该二方库AB两个应用中的参数配置是不同的,同时这两个应用自身也有一些参数需要配置,例如web.xml中的一些参数。此外对A应用和C.jar,在开发、测试和部署阶段,参数配置都有可能不同。autoconfig对以上场景都有很好的支持,能自动将参数配置自动注入到war包和jar包中,具体介绍见AutoConfig工具使用指南。下面只讲在多个web应用下一些需要注意的问题。

 

2.多应用下的使用

  如果采用maven构建,autoconfigmvn package阶段处理配置项。多个不同的web应用缺省使用一个属性文件(缺省为home目录下的antx.properties)。为了减少相互间的影响,每个web应用最好采用独立的属性文件,各自维护,对公有的部分可独立出来,在每个应用的属性文件中包含进来即可。另外开发环境、测试环境、生产环境的参数配置通常是不一样的,所以每个web应用需要有3autoconfig属性文件,分别为antx.properties.dev(用于开发环境)antx.properties.test(用于测试环境)antx.properties.deploy(用于生产境)

 

    这三个属性文件存放在web应用的src/main/webapp/META-INF/autoconf目录下,autoconfigauto-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属性文件全路径。basedirmaven内置属性,表示pom文件所在目录,每个应用的pom文件肯定是位于不同的目录,这样就实现了每个应用的属性文件分开。

  另外:AutoConfig是针对目标文件(war、jar包)的配置工具,对web应用就是针对war包中的文件和war包中的jar包注入参数配置。在eclipse中通过maven在jetty中运行时,goal目标要是jetty:run-war,不能为jetty:run

  • 大小: 9.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics