springboot加载外部配置文件
网上搜集和整理如下(自己已验证过)
1. war包在tomcat中加载外部配置文件
war包运行在独立tomcat下时,如何加载war包外部配置application.properties,以达到每次更新war包而不用更新配置文件的目的。
SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同。
可放置目录(优先级从高到低)
- 1.file:./config/ (当前项目路径config目录下);
- 2.file:./ (当前项目路径下);
- 3.classpath:/config/ (类路径config目录下);
- 4.classpath:/ (类路径config下).
- 优先级由高到底,高优先级的配置会覆盖低优先级的配置;
- SpringBoot会从这四个位置全部加载配置文件并互补配置;
想要满足不更新配置文件的做法一般会采用1 和 2,但是这些对于运行在独立tomcat下的war包并不比作用。
我这里采用的是SpringBoot的Profile配置。
在application.properties中增加如下配置:
spring.profiles.active=test1
- 再在tomcat根目录下新建一个名为config的文件夹,新建一个名为application-test1.properties的配置文件。
- 完成该步骤后,Profile配置已经完成了。
- 然后还需要将刚刚新建的config文件夹添加到tomcat的classpath中。
- 打开tomcat中catalina.properties文件,在common.loader处添加**${catalina.home}/config**,此处的config即之前新建的文件夹名称。
- 如此,大功告成。程序启动之后,每次配置文件都会从config/application-test1.properties加载。
2.自定义配置文件
如果你不想使用application.properties作为配置文件,怎么办?完全没问题
java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties
或者
java -jar -Dspring.config.location=D:\config\config.properties springbootrestdemo-0.0.1-SNAPSHOT.jar
当然,还能在代码里指定
@SpringBootApplication
@PropertySource(value={"file:config.properties"})
public class SpringbootrestdemoApplication { public static void main(String[] args) {
SpringApplication.run(SpringbootrestdemoApplication.class, args);
}
}
3.(扩展)这里详细介绍下spring.profiles.active
默认配置 src/main/resources/application.properties
app.window.width=500
app.window.height=400
指定具体环境的配置
src/main/resources/application-dev.properties
app.window.height=300
src/main/resources/application-prod.properties
app.window.width=600
app.window.height=700
简单的应用
package com.logicbig.example; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; @Component
public class ClientBean {
@Value("${app.window.width}")
private int width;
@Value("${app.window.height}")
private int height; @PostConstruct
private void postConstruct() {
System.out.printf("width= %s, height= %s%n", width, height);
}
}
package com.logicbig.example; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class ExampleMain { public static void main(String[] args) {
SpringApplication.run(ExampleMain.class, args);
}
}
运行
$ mvn spring-boot:run width= 500, height= 400
$ mvn -Dspring.profiles.active=dev spring-boot:run width= 500, height= 300
$ mvn -Dspring.profiles.active=prod spring-boot:run width= 600, height= 700
springboot加载外部配置文件的更多相关文章
- 19、属性赋值-@PropertySource加载外部配置文件
19.属性赋值-@PropertySource加载外部配置文件 加载外部配置文件的注解 19.1 [xml] 在原先的xml 中需要 导入context:property-placeholder 声明 ...
- SpringBoot加载子模块配置文件的方法
这两天开始学习SpringBoot框架,按照官方的文档,很轻易地就把单模块的项目启动了,但在使用maven搭建多模块的时候遇到了子模块配置文件没有加载的问题 项目架构是这样的 zero |-ws |- ...
- 脚本命令加载外部配置文件夹conf
加载log4j配置文件 Log4iConfigurer类 public class Log4iConfigurer { private static boolean INITIALIZED = fal ...
- SpringBoot系列——加载自定义配置文件
前言 SpringBoot启动时默认加载bootstrap.properties或bootstrap.yml(这两个优先级最高).application.properties或application. ...
- 【Spark】SparkStreaming-加载外部配置文件
SparkStreaming-加载外部配置文件 spark加载配置文件_百度搜索 Spark加载外部配置文件 - CSDN博客 spark读取配置文件中的配置 - CSDN博客 spark加载prop ...
- Springboot 加载配置文件源码分析
Springboot 加载配置文件源码分析 本文的分析是基于springboot 2.2.0.RELEASE. 本篇文章的相关源码位置:https://github.com/wbo112/blogde ...
- 【Java Web开发学习】Spring加载外部properties配置文件
[Java Web开发学习]Spring加载外部properties配置文件 转载:https://www.cnblogs.com/yangchongxing/p/9136505.html 1.声明属 ...
- jar\war\SpringBoot加载包内外资源的方式,告别FileNotFoundException吧
工作中常常会用到文件加载,然后又经常忘记,印象不深,没有系统性研究过,从最初的war包项目到现在的springboot项目,从加载外部文件到加载自身jar包内文件,也发生了许多变化,这里开一贴,作为自 ...
- 【Win 10 应用开发】加载外部的 srt 字幕
据说系统内置的多媒体功能支持 srt. ssa 等字幕,老周测试过几种格式的字幕均能加载. SRT 字幕是最简单的字幕结构,甚至你用记事本都能做出来,就是分为几行来写. 第一行是字幕的编号,应该是从1 ...
随机推荐
- Dubbo为什么要用Go重写?
先说两句 我常常在散步时思考很多技术上的「为什么问题」,有时一个问题会想很久,直到问题的每一个点都能说服自己时,才算完结.于是想把这些思考记录下来,形成文章,可以当做一个新的系列.这些文章中你可能看不 ...
- LT7211替代芯片|低BOM成本替代LT7211 EDP转LVDS转换设计芯片CS5211
LT7211B是一种用于虚拟现实/显示应用的TYPE-C/DP1.2转LVDS转换芯片.LT7211B 对于DP1.2输入,LT7211B可以配置为1.2.4车道,还支持车道交换功能.自适应均衡使其适 ...
- 使用PyTorch构建神经网络以及反向传播计算
使用PyTorch构建神经网络以及反向传播计算 前一段时间南京出现了疫情,大概原因是因为境外飞机清洁处理不恰当,导致清理人员感染.话说国外一天不消停,国内就得一直严防死守.沈阳出现了一例感染人员,我在 ...
- 「MySql高级查询与编程」练习:企业员工管理
题目:企业员工管理 一.语言和环境 1.实现语言:SQL. 2.开发环境:MySQL,navicat for mysql. 二.题目(100分): 1.创建数据库及数据表: (1)创建数据库,名称为d ...
- Android物联网应用程序开发(智慧城市)—— 火焰监控界面开发
效果: 布局代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns: ...
- [ unittest ] 使用初体验
import unittest from cal import Calculate class Mytest(unittest.TestCase): def setUp(self): self.cal ...
- ubuntu的一些常用操作
查看当前正在运行的操作系统版本 $ cat /etc/issue 查看操作系统详细信息 $ sudo lsb_release -a 查看内核版本号 $ uname -r 卸载软件(不保留配置文件) $ ...
- Vue-cli代理解决跨域问题
使用vue-cli调接口的时候,总是会出现垮与问题,因为vue的localhost与访问域名不一致导致.而这一点,开发者显然也想到了,故而在vuejs-templates,也就是vue-cli的使用的 ...
- Java的JDBC
第一个JDBC程序 创建测试数据库 CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci; USE jdbcStud ...
- FastDFS文件的上传和下载
一.FastDFS概述: FastDFS是一个开源的轻量级分布式文件系统,他对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.下载)等,解决了大容量存储和负载均衡的问题,高度追求高性能 ...