Spring之配置项管理小结

简介:

一、前言

正如webx框架文档里面所说,在一个应用中我们总是会遇到一些参数,例如:数据库服务器IP地址、端口、用户名;这些参数有一个共性,那就是:它们和应用的逻辑无关,只和当前环境、当前系统用户相关。以下场景很常见:

  • 在开发、测试、发布阶段,使用不同的数据库服务器;
  • 在开发阶段,使用Windows的A开发者将用户上传的文件存放在d:my_upload目录中,而使用Linux的B开发者将同样的文件存放在/home/myname/my_upload目录中。
  • 在开发阶段设置cache=off,在生产环境中设置cache=on。

很明显,这些参数不适合被“硬编码”在配置文件或代码中。因为每一个从源码库中取得它们的人,都有可能需要修改它们,使之与自己的环境相匹配。本文我们来看看让配置文件与应用逻辑分离几种方法

二、maven filter机制

需要在pom文件里面添加下面配置

<build>

        <filters>
            <filter>${user.home}/antx.properties</filter>
        </filters>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
</build>

然后在项目目录执行:mvn resources:resources。则会把项目目录src/main/resources下面的.xml里面的占位符变量${}使用antx.properties配置文件中的变量值进行替换

注意:Maven filter机制在build时刻永久性改变被过滤的配置文件的内容,build结束以后无法更改。这将导致一个问题:如果要改变配置文件的参数,必须获取源码并重新build。

二、AutoConfig机制

首先需要在pom添加如下:


            <plugin>
                <groupId>com.alibaba.citrus.tool</groupId>
                <artifactId>autoconfig-maven-plugin</artifactId>
                <version>1.2</version>
                <configuration>
                    <dest>src/main/resources/</dest>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>autoconfig</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

项目目录如下:
image.png

然后下载autoconfig二进制包: http://repo1.maven.org/maven2/com/alibaba/citrus/tool/antx-autoconfig/1.2/antx-autoconfig-1.2.tgz
下载后解压,添加bin目录到环境变量

然后执行 autoconfig jar包,会提示你替换jar里面的配置文件,然后jar里面的配置文件内容会被修改。
image.png

注:AutoConfig不需要重新build源码,就可以改变目标jar文件中所有配置文件中placeholders的值。

三、PropertyPlaceholderConfigurer

上面两种都是在非运行态进行替换的,PropertyPlaceholderConfigurer则是在运行态对占位符进行替换

image.png

image.png

注意:这种是在运行时进行替换。

四、Springboot机制

pom添加下面插件

<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <executable>false</executable>
                    <excludeDevtools>true</excludeDevtools>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
</plugin>

执行打包后,使用:jar -jar jar包 --spring.config.location=antx.properties执行
注: 这种做到了应用部署包和配置完全分离,是比较好的一种方式。

最后 Java并发编程之美欢迎订购

image.png

image.png

image.png

image.png

image.png

京东链接: https://item.jd.com/12450812.html
天猫链接:https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.61.59a73c85cVE3Sk&id=579705310959&user_id=1932014659&cat_id=2&is_b=1&rn=8030c6abc3a06ef8b8e63bc1badcbbb2

目录
相关文章
|
3月前
|
人工智能 监控 安全
spring cloud智慧工地信息平台管理系统源码
智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合,为工程项目管理提供先进技术手段,构建工地现场智能监控和控制体系,弥补传统方法在监管中的缺陷,最终实现项目对人、机、料、法、环的全方位实时监控。智慧工地平台支持项目级、公司级、集团级多级权限划分,可根据企业的组织架构进行项目权限、功能权限、数据权限设定。
27 1
|
4月前
|
XML Java 数据格式
④【Spring】IOC - 基于注解方式 管理bean
④【Spring】IOC - 基于注解方式 管理bean
48 0
|
4月前
|
XML Java 数据格式
②【Spring】一文精通:IOC - 基于XML方式管理Bean
②【Spring】一文精通:IOC - 基于XML方式管理Bean
146 0
|
4月前
|
Java 数据库 Spring
【Spring】资源操作管理:Resource、ResourceLoader、ResourceLoaderAware;
【Spring】资源操作管理:Resource、ResourceLoader、ResourceLoaderAware;
50 1
|
3月前
|
前端开发 Java 数据库
洋酒销售系统|基于Spring实现洋酒销售管理平台【论文文档+开题+PPT+讲解视频】
洋酒销售系统|基于Spring实现洋酒销售管理平台【论文文档+开题+PPT+讲解视频】
|
4月前
|
XML Java 数据格式
Spring注解开发管理第三方bean及依赖注入
Spring注解开发管理第三方bean及依赖注入
55 0
|
4月前
|
Java Spring
Spring注解开发bean管理及依赖注入
Spring注解开发bean管理及依赖注入
44 0
|
2月前
|
监控 Java 测试技术
Spring Boot和XXL-Job:高效定时任务管理
Spring Boot和XXL-Job:高效定时任务管理
59 0
|
2月前
|
XML 缓存 Java
解锁Spring Boot AOP的魔力:优雅地管理交叉关注点
解锁Spring Boot AOP的魔力:优雅地管理交叉关注点
145 0
|
3月前
|
Dubbo Java 应用服务中间件
如何在 Spring Boot 中制作和管理 Banner:完全指南
在 Spring Boot 应用的初启页面展示独特的ASCII艺术品能够为您的应用增添特色,并为用户或开发者提供温馨的问候。这种ASCII图案常常蕴含着项目的名称、版本信息、以及作者等重要数据。除此之外,这样的欢迎页面还起到加强品牌形象的作用。