SpringBoot_配置文件
Properties配置
SpringBoot中采用了大量的自动化配置,但是对开发者而言,在实际项目中不可避免会有一些需要自己手动配置,承载这些自定义配置的文件就是resources 目录下的application .properties文件。
Spring Boot 项目中的application.properties 配置文件一共可以出现在如下4 个位置:
• 项目根目录下的config文件夫中
• 项目根目录下
• classpath下的config 文件夫中
• classpath下
如果这4个位置中都有application.properties文件,那么加载的优先级从1 到4 依次降低,SpringBoot将按照这个优先级查找配置信息,并加载到Spring Environment 中。

如果开发者在开发中未使用application.properts,而是使用application.yml 作为配置文件,那么配置文件的优先级与application.properts的一致。如果不想使用application. properties 作为配置文件名,也可以自己定义。例如,在resources 目录下创建一个配置文件app.properties,然后将项目打成jar 包,打包成功后,使用如下命令运行:
java -jar chapter02-2-0.0.1-SNAPSHOT.jar -- spring.config.name=app
在运行时再指定配置文件的名字。使用spring.config.location可以指定配置文件所在目录(注意需要以/结束)
java -jar chapter02-2-0.0.1-SNAPSHOT.jar -- spring.config.name=app -- pring.config.location=classpath:/
YAML配置
YAML 是JSON 的超集,简洁而强大,是一种专门用来书写配置文件的语言,可以替代application.properties。在创建一个SpringBoot项目时,引入的spring-boot-starter-web依赖间接地引入了snakeyaml依赖, snakeyaml会实现对YAML 配置的解析。YAML 的使用非常简单,利用缩进来表示层级关系,并且大小写敏感。在Spring Boot 项目中使用YAML 只需要在resources 目录下创建一个application .yml文件即可,然后向application.yml中添加如下配置:
server :
port: 80
ervlet :
context-path: /chapter02
tomcat:
uri - encoding: utf-8
这一段配置等效于application.properties中的如下配置:
server.port=80
server.servlet.context-path=/chapter02
server.tomcat.uri-encoding=utf-8
YAML不仅可以配置常规属性,也可以配置复杂属性,例如下面一组配置
my:
name:小明
address:桃花源
像Properties 配置文件一样,这一段配置也可以注入一个Bean中
@Component
@ConfigurationProperties(prefix =”my”)
public class User {
private String name ;
private String address ;
}
YAML还支持列表的配置
my :
name:小明
address:桃花源
favorites:
-足球
-徒步
-乒乓
这一组配置可以注入如下Bean中
@Component
@ConfigurationProperties(prefix =”my”)
public class User {
private String name ;
private String address ;
private List<String> favorites;
}
YAML还支持更复杂的配置,即集合中也可以是一个对象
在SpringBoot中使用YAML虽然方便,但是YAML也有一些缺陷,例如无法使用@Prop e rtySource注解加载YAML 文件,如果项目中有这种需求,还是需要使用Properties格式的配置文件。
Profile
开发者在项目发布之前,一般需要频繁地在开发环境、测试环境以及生产环境之间进行切换,这个时候大量的配置需要频繁更改,例如数据库配置、redis 配置、mongodb 配置、jms 配置等。频繁修改带来了巨大的工作量,Spring对此提供了解决方案(@Profile注解), SpringBoot则更进一步提供了更加简洁的解决方案, SpringBoot中约定的不同环境下配置文件名称规则为application- {profile} .properties,profile占位符表示当前环境的名称
1.创建配置文件
首先在resources目录下创建两个配置文件:application-dev.properties和application-prod.properties此时,分别表示开发环境中的配置和生产环境中的配置。
application-dev.properties
server.port=8080
application-prod.properties
server.port=80
2.配置application.properties
然后在application.properties 中进行配置
spring.profiles.active=dev
这个表示使用application-dev.properties配置文件启动项目,若将dev 改为prod,则表示使用application-prod.properties启动项目。项目启动成功后,就可以通过相应的端口进行访问了。
3.在代码中配置
对于第二步在application.properties中添加的配置,我们也可以在代码中添加配置来完成,在启动类的main方法上添加如下代码,可以替换第二步的配置:
SpringApplicationBuilder builder = new
SpringApplicationBuilder (Chapter013Application . class) ;
Builder.application ().setAdditionalProfiles (”prod”);
builder.run(args);
4.项目启动时配置
java - jar chapter01-3-0.0.1-SNAPSHOT.jar -- spring.profiles.active=prod
SpringBoot_配置文件的更多相关文章
- .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入
上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(64)-补充WebApi与Unity注入-配置文件
系列目录 上一篇演示了WebApi利用Unity注入 很多人问我如何用配置文件来配置注入,本节演示如何利用配置文件来注入,道理是一样的,跳转到上一节下载源码一起来动手! 1.打开源码定位到文件Depe ...
- Spring配置文件标签报错:The prefix "XXX" for element "XXX:XXX" is not bound. .
例如:The prefix "context" for element "context:annotation-config" is not bound. 这种 ...
- nginx服务器安装及配置文件详解
nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自己也整理一份安装文档和nginx.conf配置选项的说明,留作以后参考.像负载均衡配置(包括健康检查).缓存( ...
- C#开发中使用配置文件对象简化配置的本地保存
C#开发中使用配置文件对象简化配置的本地保存 0x00 起因 程序的核心是数据和逻辑,开发过程中免不了要对操作的数据进行设置,而有些数据在程序执行过程中被用户或程序做出的修改是应该保存下来的,这样程序 ...
- 使用T4模板生成不同部署环境下的配置文件
在开发企业级应用的时候,通常会有不同的开发环境,比如有开发环境,测试环境,正式环境,生产环境等.在一份代码部署到不同环境的时候,不同环境的配置文件可能需要根据目标环境不同而不同.比如在开发环境中,数据 ...
- 配置文件Java读写
今天把配置文件的Bug修复了,总结一下Java配置文件如何读写 配置文件的格式 以.properties后缀结尾,内容不出现空格和双引号 //config.properties Driver=com. ...
- .NET平台开源项目速览(1)SharpConfig配置文件读写组件
在.NET平台日常开发中,读取配置文件是一个很常见的需求.以前都是使用System.Configuration.ConfigurationSettings来操作,这个说实话,搞起来比较费劲.不知道大家 ...
- DotNet程序配置文件
在实际的项目开发中,对于项目的相关信息的配置较多,在.NET项目中,我们较多的将程序的相关配置直接存储的.config文件中,例如web.config和app.config. .NET中配置文件分为两 ...
随机推荐
- 剑指offer——栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个栈是否为该栈的弹出顺序.假设压入栈的所有数字都不相等.例如序列1,2,3,4,5是某个栈的压入顺序,序列4,5,3,2,1是该栈序列的一 ...
- 在树莓派3B、Ubuntu 18.04关闭板载Wifi、蓝牙
树莓派没有传统的BIOS设置界面,文件/boot/firmware/config.txt就相当一个BIOS设置.这里是config.txt的详细文档:https://github.com/raspbe ...
- sys.stdout.flush-倒计时
1. import sys for i in range(100): sys.stdout.write('{}/99\r'.format(i)) sys.stdout.flush() 2. impor ...
- Java开发中的23种设计模式(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- python 二叉树实现带括号的四则运算
#!/usr/bin/python #* encoding=utf-8 s = "20-5*(0+1)*5^(6-2^2)" c = 0 top = [0,s[c],0] op = ...
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) C(二分+KMP)
http://codeforces.com/contest/1129/problem/C #include<bits/stdc++.h> #define fi first #define ...
- select 自匹配问题
原生js给select赋值或者vue绑定数据,会自匹配下拉选项的value或者key,从而显示对应的label或者对应的option的html eg: 原生: <select name=&quo ...
- 解决phpstudy在 cmd窗口输出 php5 中文显示乱码问题
xampp没事,但切换到phpstudy后发现echo中文变成了乱码 找到解决办法:在cmd里输入 chcp 65001 命令 切换字符编码 chcp 65001 就是换成UTF-8 chcp 93 ...
- MUI 添加自定义图标(注意点)
参考: https://blog.csdn.net/qq_39759115/article/details/79436606 注意: 1. 将这个原来的逗号改成分号 2. 这些图标的名字都可以改名字
- NC 刷新后,停留上一次选择的行(多行)
如图,我点击批量输入后,会调用列表刷新按钮.但数据之前选择的光标会跳到第一行,原先选择的行就不知道是哪行可.图为最终效果 // 批量输入日期后实时刷新 apply update(batch input ...