开发Spring应用程序时,最常见的用例是您希望拥有多个版本的配置属性,具体取决于要部署到的位置,例如,数据库URL或功能标志可能是特定于dev,qa,production等环境的。

像大多数Spring开发任务一样,有多种方法可以解决问题。 我的偏好基于以下假设和偏好:

  • 我们创建一个默认的配置属性文件(例如“ appConfig.properties”),并将其打包在可部署工件(JAR或WAR等)中

    • 该文件将包含一组合理的默认“基线”属性,应用程序需要这些属性才能成功运行
  • 我们要通过位于已部署应用程序的工作目录中的外部文件覆盖基准appConfig.properties文件中的属性
    • 我们通常将此文件命名为appConfigOverride.properties
  • 在执行应用程序或设置系统变量时,可以通过在命令行上传递参数来覆盖应用程序属性,但这是一个单独的主题

解决方案

我们为application-context.xml使用以下结构:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"><context:property-placeholder location="file:appConfigOverride.properties" order="-1"ignore-unresolvable="true" ignore-resource-not-found="true" /><context:property-placeholder location="classpath:appConfig.properties" />....</beans>

这里的关键是'order'属性,当在另一个文件中也找到该属性(有效覆盖另一个文件中的值)时,该属性将强制使用在appConfigOverride.properties中找到的属性,以及'ignore-unresolvable = “ true” ignore-resource-not-found =“ true”'允许Spring在找不到外部文件(或不包含覆盖appConfig文件的所有默认属性)的情况下继续加载上下文

参考: The Tai-Dev Blog博客上的JCG合作伙伴 Daniel Bryant 通过外部文件覆盖打包的Spring应用程序属性文件 。

翻译自: https://www.javacodegeeks.com/2013/07/overriding-a-packaged-spring-application-properties-file-via-an-external-file.html

通过外部文件覆盖打包的Spring应用程序属性文件相关推荐

  1. asar软件包linux,ASAR文件查看打包解包工具下载-ASAR文件查看打包解包工具v2018.07.12免费版-ucbug软件站...

    ASAR文件查看打包解包工具是一款能够帮助用户对ASAR文件进行管理的工具,通过ASAR文件查看打包解包工具能够对文件进行查看.打包.解包等功能,有需要的可以下载使用. 功能介绍 electron的a ...

  2. Spring Boot——读取属性文件的多种方法

    前言 在程序开发中,为了减少程序中的"硬编码",我们通常会将一些信息放在属性文件中,再读取到程序中.Spring 提供了多种便利的方法帮助我们从属性文件中读取数据. 一.属性文件加 ...

  3. 【webpack】使用webpack打包图片文件、打包时生成单独的css文件

    使用webpack打包图片文件 在scr目录下创建image文件夹,并且添加几张图片 在main.js使用import方式引入所有图片,并且append到app节点下 // 引入图片资源 import ...

  4. java中重新加载指定文件_java-更改后重新加载属性文件

    我将属性文件加载到一个类中,然后在整个应用程序中使用该类来获取它们. public class PropertiesUtil extends PropertyPlaceholderConfigurer ...

  5. linux文件的打包与下载总结,linux下文件的打包和压缩

    一.文件压缩的原理 简单来说,压缩技术就是在存储时将文件里面没有使用的空间利用起来,主要有以下两种情况. 存储时去掉没有用到的空间.假设我们只是存储一个数字 1 ,二进制表示数字1只需1个bit是1就 ...

  6. Spring Cloud: .yml属性文件配置 (完善中)

    服务消费端 server:port: 8080 spring:application:name: orderservice # spring cloud 服务名称# 数据源datasource:dri ...

  7. linux压缩指定时间的文件,Linux下压缩某个文件夹(文件夹打包)

    tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.ta ...

  8. Spring-使用外部属性文件01

    导读 概述 PropertyPlaceholderConfigurer属性文件 实例 使用PropertyPlaceholderConfigurer属性文件 PropertyPlacerholderC ...

  9. linux的文件压缩打包操作,Linux文件管理-压缩打包

    原标题:Linux文件管理-压缩打包 压缩打包介绍 windows下我们接触最多的压缩文件就是.rar格式, 但Linux有自己所特有的压缩工具. 如果希望windows和Linux互相能使用的压缩工 ...

最新文章

  1. MCSE2003学习之六
  2. android 字符串函数,Android JNI开发系列(六)字符串操作
  3. php引用数据检测,利用单元测试检查PHP代码
  4. 安装Microsoft Sysprep工具
  5. 四五六年级计算机教学计划,五六年级信息技术教学计划
  6. (46)FPGA对数运算符(V代码实现)
  7. CCFollow和ActionCallFunc
  8. keymap in ubuntu
  9. 深入理解HTTP一:网络基础TCP/IP
  10. java 将pdf文件转成高清图片(多张合并成一张)
  11. 学习Java时,要记住的知识点太多,记不住怎么办?
  12. tomcat运行后报错“Address localhost:1099 is already in use”
  13. ChatGPT聊天机器人如何发图片????
  14. Access Points (单调栈)
  15. 实体知识+字典树辅助jieba的分词(并对三国演义进行简单分析)
  16. 小米手环硬件构成及原理图
  17. 部署报错$notify
  18. 邮箱满了,但是Web邮箱又登陆不上怎么办?
  19. python协程使用场景桌面_python协程的使用
  20. 如何利用数据挖掘告别单身

热门文章

  1. php 向html追加元素,在PHP中存储兄弟元素的属性和内部HTML
  2. JDBC元数据操作(一)-- DatabaseMetaData接口详解
  3. java oca_OCA第6部分中的Java难题
  4. 无服务器–仅仅是构建现代应用程序的一种方法?
  5. dynamodb java_使用Java更新DynamoDB项
  6. ogm session_带有Hibernate OGM的NoSQL –第三部分:在WildFly上构建REST应用程序
  7. maven 部署nexus_设置本地Nexus存储库并从Maven部署WAR文件
  8. junit:junit_简而言之,JUnit:另一个JUnit教程
  9. hibernate jpa_JPAHibernate替代方案。 如果JPA或Hibernate对于我的项目而言不够好,该怎么办?...
  10. Hibernate字节码增强