AutoConfig的使用
建立AutoConfig目录结构
和Maven Filtering不同的是,AutoConfig是针对目标文件的配置工具。
因此AutoConfig关心的目录结构是目标文件的目录结构。
不同的build工具,创建同一目标目录结构所需要的源文件的目录结构会各有不同。
本文仅以maven标准目录结构为例,来说明源文件的目录结构编排。
WAR包的目录结构
下面以maven标准目录为例,说明项目源文件和目标文件的目录结构的对比:
/META-INF/autoconf目录用来存放AutoConfig的描述文件,以及可选的模板文件。
auto-config.xml是用来指导AutoConfig行为的关键描述文件。
创建war包的AutoConfig机制,关键在于创建war目标文件中的/META-INF/autoconf/auto-config.xml描述文件。
该描述文件对应的maven项目源文件为:/src/main/webapp/META-INF/autoconf/auto-config.xml。
JAR包的目录结构
下面以maven标准目录为例,说明项目源文件和目标文件的目录结构的对比:
/META-INF/autoconf目录用来存放AutoConfig的描述文件,以及可选的模板文件。
auto-config.xml是用来指导AutoConfig行为的关键描述文件。
创建jar包的AutoConfig机制,关键在于创建jar目标文件中的/META-INF/autoconf/auto-config.xml描述文件。
该描述文件对应的maven项目源文件为:/src/main/resources/META-INF/autoconf/auto-config.xml。
普通目录
AutoConfig也支持对普通文件目录进行配置。
默认情况下,AutoConfig在/conf目录中寻找AutoConfig的描述文件,以及可选的模板文件。
auto-config.xml是用来指导AutoConfig行为的关键描述文件。
建立auto-config.xml描述文件
AutoConfig系统的核心就是auto-config.xml描述文件。
该描述文件中包含两部分内容:
1、定义properties:properties的名称、描述、默认值、约束条件等信息。
2、指定包含placeholders的模板文件。
定义properties
定义一个property的完整格式如下
<property
name="..."
[defaultValue="..."]
[description="..."]
[required="true|false"]
>
<validator name="..." />
<validator name="..." />
...
</property>
定义property时可用的参数
参数名说明
nameProperty名称。
defaultValue(可选)默认值。默认值中可包含对其它property的引用,如${petstore.work}/logs。
description(可选)对字段的描述,这个描述会显示给deployer,这对他理解该property非常重要。
required(可选)是否“必填”,默认为true。如果deployer未提供必填项的值,就会报错。
定义property的验证规则
生成配置文件的指令
描述文件中,每个<generate>标签指定了一个包含placeholders的配置文件模板,具体格式为:
<generate
template="..."
[destfile="..."]
[charset="..."]
[outputCharset="..."]
>
参数名说明
template需要配置的模板名。模板名为相对路径,相对于当前jar/war/ear包的根目录。
destfile(可选)目标文件。如不指定,表示目标文件和模板文件相同。
charset(可选)模板的字符集编码。XML文件不需要指定charset,因为AutoConfig可以自动取得XML文件的字符集编码;对其它文件必须指定charset。
outputCharset(可选)目标文件的输出字符集编码。如不指定,表示和模板charset相同。
建立模板文件
定义完auto-config.xml描述文件以后,就可以创建模板了。模板放在哪里呢?
假设在一个典型的WEB应用中,你的auto-config.xml中包含指定了如下模板:
那么,你可以把file1.xml、file2.xml、file3.xml放在下面的位置:
AutoConfig的寻找模板的逻辑是:
如果在auto-config.xml所在的目录下发现模板文件,就使用它。
否则在包的根目录中查找模板文件;如果两处均未找到,则报错。
模板的写法
书写模板是很简单的事,你只要:
把需要配置的点替换成placeholder:“${property.name}”。当然,你得确保property.name被定义在auto-config.xml中。
假如模板中包含不希望被替换的运行时的placeholder“${...}”,需要更改成“${D}{...}” 。
模板示例
...
<context-param>
<param-name>loggingRoot</param-name>
<param-value>${petstore.loggingRoot}</param-value>
</context-param>
<context-param>
<param-name>loggingLevel</param-name>
<param-value>${petstore.loggingLevel}</param-value>
</context-param>
...
${D}{runtime.placeholder}
此外,AutoConfig模板其实是由Velocity模板引擎来渲染的。因此,所有的placeholder必须能够通过velocity的语法。
使用不符合velocity语法的placeholders
例如
${my.property.2}
解决的办法是,改写成如下样式:
${my_property_2}
相关推荐
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
<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 ...
官方版本,亲测可用
Spring-boot 做了 Autoconfig,如果是 SpringMVC,也可自己在 xml 初始化 beanChange Log版本状态1.0.1发版1.0.4支持Context添加变量使用方式基本使用maven依赖添加SDK依赖 <dependency> <groupId>io.github.mouzt...
SpringSecurityWithDatabase 使用数据库中的凭据进行...servlet.xml)中,设置组件扫描标签搜索注解驱动的控制器,同时设置viewResolver 添加spring security消费的spring-security.xml文件,将http autoconfig设置为tr
#Guns V2.1 新版Guns基于SpringBoot...注:SpringBoot强大的Auto Config和统一的依赖管理极大的简化了spring配置和maven依赖,在不了解其都配置了哪些东西的基础上可能会对初学者有一定困扰,所以建议初学者先看Guns V1.0
## Config: 可以通过spring boot autoconfig完成配置。 在oauth检查之后,U只需要将SignInAdapter隐含并注册到上下文中即可执行登录##用法: 将Maven Depency添加到您的项目中 <dependency> <groupId>...
支持同步和异步写入数据,支持异步回调删除数据查询最新数据查询metric、tag_key和tag_value,支持auto_complete`源码中CrudTest类提供了一些使用说明和测试,包括并发查询测试和并发写入测试`快速开始Maven依赖...
4.jdbc-hibernate-config-gourderwa.properties 中默认hibernate.hbm2ddl.auto=create ,如做好demo数据后请修改为validate 5.将doc中文件放置于 pdfUploadAddress 配置目录下,项目启动后自动设置为demo数据文件 ...
易于使用和重复使用 最小学习曲线 可通过插件扩展 先决条件 开发工具和应用程序 代码风格 Intelligence IDEA的代码样式是默认样式,存储在config/soc.xml 。 要导入它,请阅读。 发展 Maven开发概要soc-modules-...
注:SpringBoot强大的Auto Config和统一的依赖管理极大的简化了spring配置和maven依赖,在不了解其都配置了哪些东西的基础上可能会对初学者有一定困扰,所以建议初学者先看Guns V1.0 ##功能 简介 用户管理 角色管理 ...
你可以使用全部的Webx,也可以仅仅使用到Webx的任何一个层次。 引言 ............................................................................................................................... ix 1. ...
Diamond -- 分布式配置中心一、简介Diamond是淘宝研发的分布式配置管理系统。使用Diamond可以让集群...-- 配置表CREATE TABLE IF NOT EXISTS `config_info` ( `id` bigint(64) unsigned NOT NULL AUTO_INCREMENT, `data
可自定义的参数,例如服务器端口和恢复方法[请参阅#config.properties]。 相关性(如果没有docker) Apache Maven> = 3.3.9 Java〜1.8 安装 不是码头工人朋友 1. Git clone ...
maven { url 'https://jitpack.io' } } }Step 2. Add the dependencydependencies { compile 'com.github.NoEndToLF:Gif-Load-ReTry-Refresh:1.1.2' }配置属性方法参数作用setGifR.drawable.*加载...
管理SDKMAN配置文件: /path/to/sdkman/etc/config 刷新SDKMAN缓存 警告:Oracle使其JDK的安装变得越来越困难,这阻碍了通过SDKMAN安装它们的能力。 考虑改用OpenJDK或通过其他方式安装/管理Oracle JDK。 要求 没有...