spring boot 配置文件
全局配置:
Spring Boot 的默 认 配 置 文 件位置为 src/main/resources/application.properties 。关于SpringBoot应用的配置内容都可以集中在该文件中, 根据我们引入的不同Starter模块,可以在这里定义容器端口号、 数据库连接信息、 日志级别等各种配置信息。比如,我们需要自定义Web模块的服务端口号,可以在application.properties中添加 server.port=8888 来 指 定 服 务 端口为 8888 , 也可 以通过spring.app让ca巨on.name= hello 来指定应用名。
Spring Boot的配置文件除了可以使用传统的 properties文件之外,还支持现在被广泛推荐使用的YAML文件。
application.properties :例:server.port=9998
application.yml(YAML) :例:server:
port:8080
properties文件相信大家接触得都很多了,这里介绍一下 yml 文件
yml:以数据为中心。
基本语法:
key:(这里一定要有个空格) value表示一对键值对
以空格的缩进来控制层级关系:只要是左对齐的一列数据,都是同一个层级的 。
值的写法:
字面量:普通的 值(数字,字符串,布尔):
key: value 字面量直接来写,字符串不用加单引号或者双引号
" " :双引号,不会转义字符串里面的特殊字符,写了什么就是什么,比如在双引号中写了\n (转移后为换行),但是这里就只是\n 并不会换行
‘ ‘ :会转义
对象(属性和值)(键值对):
key: value : (注意空格和缩进)
filed: value
例如:
people:
name: zhangs
age: 20
peopleName = people-name
行内写法:people: {name: zhangs,age: 20}
数组(list set):
例如:
animals:
- cat
- dog
- pig
行内写法:animals: [cat,dog,pig]
自定义参数:
配置文件占位符:${random.uuid} ${people.hello:hello}如果系统中没有定义people.hello,默认值为hello
@Component
@ConfigurationProperties(prefix="shelter")
//@PropertySource("classpath:shelter.properties")
public class ShelterConfig { //@Value("${shelter.upload.path}")
private String uploadPath ; //@Value("${shelter.pageHelp.pageSize}")
private Integer pageSize ; }
如此便可以将配置文件中的配置读到配置类中。@ConfigurationProperties:告诉spring boot将本类中的属性和配置文件中的相关值进行绑定,通过其中有个prefix=“shelter”,表示将具有shelter前缀下面的属性进行 一 一 映射,以上类必须是容器中的组件才能使用此功能 所以还需要加个注解@Component。另一种获取值的方法
@Component
//@ConfigurationProperties(prefix="shelter")
@PropertySource("classpath:shelter.properties")
public class ShelterConfig { @Value("${shelter.upload.path}")
private String uploadPath ; @Value("${shelter.pageHelp.pageSize}")
private Integer pageSize ; }
@PropertySource:加载指定的配置文件,如果不加这个注解,会去全局配置文件里面去查找。
@ImportResource:导入自己编写的spring的配置文件,让配置文件内容生效,比如可以自己编写一个xml通过此方法进行注入将@ImportResource(locations={"classpath:xxx.xml"})标注在配置类中,比如主程序类。
<!-- 配置文件处理器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
这个依赖就是在编写配置文件的 时候有提示。不引入此依赖便不会有提示
参数引用:
在 application.properties 中的各个参数之间可以直接通过使用 PlaceHolder 的方式来进行引用 , 就像下面的设置:
book.name = Test
book.author = wuzz
book.desc = ${book.author} is writing《${book.name}》
book.desc 参数引用了上文中定义的book.name和book.author 属性, 最后该属性的值就是wuzz is writing Test。
使用随机数:
在一 些特殊情况下, 我们希望有些参数每次被加载的时候不是 一 个固定的值, 比如密钥、 服务端口等。 在 Spr ingBoot的属性配置文件中, 可以 通过 使用${random}配置来产生随机的int值、long值或者string字符串,这样我们就可以容易地通过 配置随机生成属性,而不是在程序中通过编码来实现这些逻辑。
${random}的配置方式主要有以下几种, 读者可作为参考使用。
#随机字符串
com.didispace.blog.value=${random.value}
#随机int
com.didispace.blog.number=${random.int}
#随机long
com.didispace.blog.bignumber=${random.long}
# 10以内的随机数
com.didispace.blog.test=${random.int(l0)}
# -20的随机数
com.didispace.blog.test2=${random.int[l0,]}
该 配置方式可以 设置应用 端口等场景, 以避免在本地调试时出现端口冲突的麻烦。
多Profile文件:
配置文件编写的时候:创建配置文件application.properties / application-dev.properties / application-prod.properties,默认使用application.properties该配置。如果要使用生产和开发环境,可以在该文件中设置属性spring.profiles.active = dev 来激活
可以使用yml多文档块的方式去实现以上的需求,每个文档快以 --- 来分割。也可以在使用java -jar xxx.jar的时候增加一行命令 --spring.profiles.active = dev来实现
配置文件的加载顺序:下面4个文件目录是spring会自动识别的加载主配置文件,优先级由高到低,高优先级的在遇到相同的配置的时候会去覆盖低优先级的配置文件信息
- file:/config/
- file:/
- classpath:/config/
- classpath:/
加载顺序:
我们将SpringBoot应用需要的配置内容都放在了项目工程中, 已经能够通过spring.profiles.active或是通过Maven来实现多环境的支待。 但是, 当团队逐渐壮大, 分工越来越细致之后, 往往不需要让开发人员知道测试或是生产环境的细节, 而是希望由每个环境各自的负责人(QA或是运维)来集中维护这些信息。 那么如果还是以这样的方式存储配置内容, 对于不同环境配置的修改就不得不去获取工程内容来修改这些配置内容, 当应用非常多的时候就变得非常不方便。 同时, 配置内容对 开发人员都可见, 这本身也是 一 种安全隐患。 对此, 出现了很多将 配置内容外部化的框架和工具, 为了能够更合理地重写各属性的值,SpringBoot使用了下面这种较为特别的属性加载顺序:
- Devtools全局设置属性在你的主目录(~/.spring-boot-devtools.properties当devtools处于激活状态时)。
- 测试中的@TestPropertySource注解
- 测试中的@SpringBootTestproperties注解属性
- 命令行参数
- 来自SPRING_APPLICATION_JSON(嵌入在环境变量或系统属性中的内联JSON)的属性
- ServletConfig初始化参数
- ServletContext初始化参数
- java:comp/env中的JNDI属性
- Java系统属性(System.getProperties())
- 操作系统环境变量
- 一个只有random.*属性的RandomValuePropertySource
- 在你的jar包之外的 特殊配置文件的 应用程序属性(application-{profile}.properties和YAML 变体)
- 打包在jar中的 特殊配置文件的 应用程序属性(application-{profile}.properties和YAML 变体)
- 在你的jar包之外的应用程序属性(application.properties和YAML 变体)
- 打包在jar中的应用程序属性(application.properties和YAML 变体)
- @PropertySource注解在你的@Configuration类上
- 默认属性(通过设置SpringApplication.setDefaultProperties指定)
优先级按上面的顺序由高到低,数字越小优先级越高。可以看到,其中第12项和第14项 都是从应用jar包之外读取配置文件,所以,实现外部化配置的原理就是从此切入,为其指定外部配置文件的加载位置来取代jar包之内的配置内容。 通过这样的实现,我们的工程在配置中就变得非常干净,只需在本地放置开发需要的配置即可,而不用关心其他环境的配置,由其对应环境的负责人去维护即可。
监控与管理:
当我们决定用Spring Boot来作为微服务框架时,除了它强大的快速开发功能之外,还因为它在StarterPOMs中提供了 一 个特殊依赖模块spring-boot-starter-actuator 。引入该模块能够自动为 Spring Boot 构建的应用提供一 系列用于监控的端点。在现有的 Spring Boot 应用中引入该模块非常简单, 只需要在 pom.xml 的dependency 节点中,新增 spring-boot-starter-actuator 的依赖即可,具体如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
增加该依赖之后,配置management.security.enabled=false 重新启动应用。此时,我们可以在控制台中看到如下图所示的输出:

上图显示了一批端点定义, 这些端点并非我们自己在程序中创建的, 而是由spring-boot-starter-actuator 模块根据应用依赖和配置自动创建出来的监控和管理端点。通过这些端点,我们可以实时获取应用的各项监控指标.
原生端点:
通过在快速入门示例中添加spring-boot-starter-actuator模块, 我们已经对它有了一 个初步的认识。接下来,我们详细介绍 一 下 spring-boot-starter-actuator模块中已经实现的 一 些原生端点。 根据端点的作用, 可以将原生端点分为以下三大类。
- 应用配置类:获取应用程序中加载的应用配置、 环境变量、 自动化配置报告等与Spring Boot应用密切相关的配置类信息。
- 度量指标类:获取应用程序运行过程中用于监控的度量指标, 比如内存信息、 线程池信息、 HTTP请求统计等。
- 操作控制类:提供了对应用的关闭等操作类功能。
spring boot 配置文件的更多相关文章
- Spring Boot 配置文件详解
Spring Boot配置文件详解 Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件.他们的作用都是修改Spring Boot自动配置的默认值.相对于prop ...
- Springboot 系列(二)Spring Boot 配置文件
注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 不管是通过官方提供的方式获取 Spring ...
- 史上最全的Spring Boot配置文件详解
Spring Boot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍.Spring Boot配置文件对Spring Boot来说就是入门和基础,经常会用到,所以写下做个总结以便日 ...
- Spring Boot学习——Spring Boot配置文件application
Spring Boot配置文件有两种格式: application.properties 和 application.yml.两种配置文件只需要使用一个. 这两种配置文件的语法有些区别,如下 1. a ...
- Spring Boot配置文件大全
Spring Boot配置文件大全 ############################################################# # mvc ############## ...
- Spring Boot 配置文件和命令行配置
Spring Boot 属于约定大于配置,就是说 Spring Boot 推荐不做配置,很多都是默认配置,但如果想要配置系统,使得软件符合业务定义,Spring Boot 可以通过多种方式进行配置. ...
- Spring Boot 配置文件密码加密两种方案
Spring Boot 配置文件密码加密两种方案 jasypt 加解密 jasypt 是一个简单易用的加解密Java库,可以快速集成到 Spring 项目中.可以快速集成到 Spring Boot 项 ...
- 黑马_13 Spring Boot:04.spring boot 配置文件
13 Spring Boot: 01.spring boot 介绍&&02.spring boot 入门 04.spring boot 配置文件 05.spring boot 整合其他 ...
- spring boot 配置文件properties和YAML详解
spring boot 配置文件properties和YAML详解 properties中配置信息并获取值. 1:在application.properties配置文件中添加: 根据提示创建直接创建. ...
- Spring boot配置文件 application.properties
http://www.tuicool.com/articles/veUjQba 本文记录Spring Boot application.propertis配置文件的相关通用属性 # ========= ...
随机推荐
- Excel根据字符串截取单元格部分内容
我第一列的数据是这样的 我需要 1.将“projectId=”后面的数字放到第二列, 以及 2.将”mediumId=”后面的数字放到第三列 针对1使用函数:=MID(A2,FIND("pr ...
- 【tmos】SpringBoot+WebSocket打包时候的注意点
要跳过测试打包:mvn package -DskipTests否则会报以下错误 Error creating bean with name 'serverEndpointExporter' defin ...
- 1173 - The Vindictive Coach
题目大意:n个不同身高的队员和教练的按照身高排成波浪形……每个人按照身高由低到高编号,其中第m个是教练,他必须在第一个,如果条件允许,排第二的要比m低,如果条件不允许,即其余人都比教练高,则要让差距尽 ...
- Django实战(一)-----用户登录与注册系统7(邮件确认)
通常而言,我们在用户注册成功,实际登陆之前,会发送一封电子邮件到对方的注册邮箱中,表示欢迎.进一步的还可能要求用户点击邮件中的链接,进行注册确认. 下面就让我们先看看如何在Django中发送邮件吧. ...
- WPF StoreDataSetPaginator
public class StoreDataSetPaginator : DocumentPaginator { private DataTable dt; // Could be wrapped w ...
- [转] pytorch指定GPU
查过好几次这个命令,总是忘,转一篇mark一下吧 转自:http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如 ...
- CF1101G (Zero XOR Subset)-less
题目地址:CF1101G (Zero XOR Subset)-less 线性基基础题 预处理一个前缀异或和 \(s_i\) 这样题目就变成了:在 \(n\) 个 \(s_i\) 中尽量选择多的数使选择 ...
- 关于python中的矩阵乘法(array和mat类型)
关于python中的矩阵乘法,我们一般有两种数据格式可以实现:np.array()类型和np.mat()类型: 对于这两种数据类型均有三种操作方式: (1)乘号 * (2)np.dot() (3)np ...
- CROSS APPLY和 OUTER APPLY
背景 好强大的sql,但是我好想真极少用过这两个函数,再次强调,不要总是用sql解决问题.让人欢喜让人悲的sql. -- cross applyselect * from TABLE_1 T1cr ...
- Jmeter之csv参数化
创建数据源csv文件 在线程组中添加CSV Data Set Config 1.添加CSV Data Set Config 添加CSV Data Set Config 2.配置CSV Data Set ...