`

maven AutoConfig使用

阅读更多

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}

 

  • 大小: 38.6 KB
  • 大小: 29.5 KB
  • 大小: 7.4 KB
  • 大小: 27.6 KB
  • 大小: 56.2 KB
分享到:
评论

相关推荐

    autoconfig-maven-plugin-1.1-sources.jar

    官方版本,亲测可用

    autoconfig-maven-plugin-1.2.jar

    官方版本,亲测可用

    autoconfig-maven-plugin-1.1.jar

    官方版本,亲测可用

    autoconfig-demo.zip

    &lt;artifactId&gt;autoconfig-demo &lt;version&gt;0.0.1-SNAPSHOT &lt;name&gt;autoconfig-demo &lt;description&gt;Demo project for Spring Boot &lt;java.version&gt;1.8 &lt;groupId&gt;org.springframework.boot ...

    autoconfig-maven-plugin-1.2-sources.jar

    官方版本,亲测可用

    Spring Security 新手入门级maven实例

    &lt;security:http auto-config="true"&gt; **" access="hasRole('ROLE_ADMIN')"/&gt; , ROLE_ADMIN"/&gt; ``` 4. **运行与测试** 导入项目后,你可以直接运行它。启动应用,尝试访问不同的URL,...

    SSM+maven+mysql实现登录注册功能

    2. **配置SSM**:在src/main/resources目录下创建配置文件,如applicationContext.xml(Spring配置)、springmvc-dispatcher-servlet.xml(SpringMVC配置)、mybatis-config.xml(MyBatis配置)。 3. **数据库设计*...

    spring bootMVC+maven+mybatis

    - 使用`mvn clean package`命令,Maven会编译源代码、运行测试并打包成可执行的JAR或WAR文件。 5. **项目结构**: - 根据给定的压缩包文件名称`jscprj-6.8`,我们可以推测项目可能包含以下几个关键目录: - `src...

    cas客户端jar包

    1. **添加依赖**:将提供的jar包添加到项目构建路径中,如果是Maven或Gradle项目,可以将其作为依赖管理。 2. **配置CAS服务器**:在应用程序配置文件中,需要提供CAS服务器的URL,以及应用的ID(服务URL)。 3. **...

    Spring Security 3.1 配置实例,有URL 方法拦截,都存数据库 maven

    &lt;http auto-config="true"&gt; **" access="ROLE_ADMIN" /&gt; **" access="ROLE_USER, ROLE_ADMIN" /&gt; ``` 这里,`&lt;intercept-url&gt;`标签定义了URL模式及其对应的访问权限。`access`属性指定了需要的角色,如`ROLE...

    mzt-biz-log:支持Springboot,基于注解的可使用变量的通用操作日志组件

    Spring-boot 做了 Autoconfig,如果是 SpringMVC,也可自己在 xml 初始化 beanChange Log版本状态1.0.1发版1.0.4支持Context添加变量使用方式基本使用maven依赖添加SDK依赖 &lt;dependency&gt; &lt;groupId&gt;io.github.mouzt...

    mybatis-plus 源码使用

    `.mvn` 目录包含 Maven 的配置文件,如 `maven-wrapper.properties` 用于定义 Maven 包版本和下载路径,`maven.config` 可以自定义 Maven 的执行参数。 11. **`target` 目录** `target` 目录是 Maven 构建后生成...

    autoconfigserver:自动配置服务器 - 管理集群的配置服务器

    为了部署和使用"autoconfigserver",开发者需要熟悉Java开发环境,如Maven或Gradle,以及可能涉及的相关技术,如Spring Boot、Git和HTTP协议。通过深入研究项目源码,可以学习到如何构建一个高效且可靠的配置管理...

    SpringSecurityWithDatabase:使用来自数据库的身份验证的 Spring 安全示例

    SpringSecurityWithDatabase 使用数据库中的凭据进行...servlet.xml)中,设置组件扫描标签搜索注解驱动的控制器,同时设置viewResolver 添加spring security消费的spring-security.xml文件,将http autoconfig设置为tr

    guns学习课程(包括收费的视频)完整版

    #Guns V2.1 新版Guns基于SpringBoot...注:SpringBoot强大的Auto Config和统一的依赖管理极大的简化了spring配置和maven依赖,在不了解其都配置了哪些东西的基础上可能会对初学者有一定困扰,所以建议初学者先看Guns V1.0

    spring-social-qq

    ## Config: 可以通过spring boot autoconfig完成配置。 在oauth检查之后,U只需要将SignInAdapter隐含并注册到上下文中即可执行登录##用法: 将Maven Depency添加到您的项目中 &lt;dependency&gt; &lt;groupId&gt;...

    Auto-create.7z

    在实际使用中,开发者首先会编写generator.xml文件,然后通过命令行或者集成到构建工具(如Maven或Gradle)中执行MBG,命令通常类似: ```bash java -jar mybatis-generator-core-1.3.7.jar -configfile generator....

    SpingBoot框架使用与研究项目

    这个项目中,你将会学习到如何创建SpringBoot应用,配置自动配置,使用Thymeleaf进行视图渲染,利用Actuator监控应用,集成Spring Data JPA进行数据库操作,以及如何通过Maven或Gradle构建和管理项目。此外,你还...

    opentsdb-java-sdk:用Java语言封装了openTSDB的http api

    支持同步和异步写入数据,支持异步回调删除数据查询最新数据查询metric、tag_key和tag_value,支持auto_complete`源码中CrudTest类提供了一些使用说明和测试,包括并发查询测试和并发写入测试`快速开始Maven依赖...

    springboot全套学习资料.txt

    - **Config Server**:介绍如何使用Spring Cloud Config Server实现配置中心化管理。 - **版本控制**:介绍如何将配置文件存储在Git等版本控制系统中。 ##### 2.8 持久化层 - **事务管理**:介绍如何使用Spring ...

Global site tag (gtag.js) - Google Analytics