标签:autoconfig
参考
webx
程序运行的一些环境变量会随着机器发生变化,autoconfig就是自动将这些变量加载进来的。
autoconfig使用一套配置模板,为不同的环境生成相应的具体配置。它的核心思想是把一些可变的配置定义为一个模板,在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}" />
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:autoconfig
原文地址:http://blog.csdn.net/gg_gogoing/article/details/47315221