码迷,mamicode.com
首页 > Web开发 > 详细

web中配置传入程序-autoconfig

时间:2015-08-06 15:12:33      阅读:832      评论:0      收藏:0      [点我收藏+]

标签:autoconfig

参考
webx
程序运行的一些环境变量会随着机器发生变化,autoconfig就是自动将这些变量加载进来的。
autoconfig使用一套配置模板,为不同的环境生成相应的具体配置。它的核心思想是把一些可变的配置定义为一个模板,在autoconfig运行的时候从这些模板中生成具体的配置文件。

  1. Maven中添加包
  2. META-INF/autoconf/auto-config.xml 就是autoconfig的配置文件
<config>   
    <group>   
        <property name="net.kiminotes.value" />   
            <property name="alibaba.buc.acl.service.version" defaultValue="2.0.0.daily" description="ACL服务的HSF版本" />
    </group>   

    <script>   
        <generate template="config.properties.vm" destfile="config.properties" charset="utf-8" />   
    </script>   
</config>   

这里的property对应的是一条name->value ,其中也有目的生成.properties文件
Generate就是生成目标文件。被替换的变量中.会自动变为_

autoconfig提供了两种方式来给配置变量赋值第一从java属性文件中读取第二是交互式地编辑。
autoconfig首先读取当前工作目录的antx.properties文件,如果没有则读取 $ { user.home }/antx.properties文件,如果这个文件也不存在,autoconfig就会启动交互式编辑器请求用户输入配置变量的值,如果配置变量的值是不完整的autoconfig则会立即停止配置并抛出一个异常。如果java属性文件的位置不在autoconfig默认的位置可以通过参数autoconfig.userProperties进行配置。处于简单其间,我们在当前目录新建一个java属性文件antx.properties,这个文件中定义了配置变量${net_kiminotes_value}的值

auto-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <group name="buc acl">
        <property name="service.version" defaultValue="2.0.0.daily" description="ACL服务的HSF版本" />
        <property name="club.production" defaultValue="test" description="production mode(run/test/debug)" />
        <property name="app.name" defaultValue="club" description="buc app name" />
        <property name="SystemId" defaultValue="OPLOG00749_a597" description="SystemId" />
    </group>

    <group name="havana club">
        <property name="club.output" defaultValue="/home/admin/output/logs" description="日志输出路径" />
    </group>

    <script>
        <generate template="club.properties.vm" destfile="havana-club.properties" charset="UTF-8" />
        <generate template="web.xml.vm" destfile="WEB-INF/web.xml" charset="UTF-8" />
        <generate template="logback.xml.vm" destfile="WEB-INF/logback.xml" charset="UTF-8" />
    </script>
</config>

模板
club.properties.vm

service.version=${service_version}
club.production=${club_production}
club.buc.app.name=${app_name}
club.output=${club_output}
SystemId=${SystemId}

这些参数就会在spring的xml读入时候加载

spring.xml

<bean
        class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
    <bean
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="locations">
            <list>
                <value>classpath:club.properties</value>
            </list>
        </property>
    </bean>
    <--传入参数-->
    <bean id="accessContext" class="com.web.AccessContext">
        <property name="appName" value="${app.name}" />

版权声明:本文为博主原创文章,未经博主允许不得转载。

web中配置传入程序-autoconfig

标签:autoconfig

原文地址:http://blog.csdn.net/gg_gogoing/article/details/47315221

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!