引言:

Springboot有一个全局配置文件,这个配置文件默认是properties文件,就是application.properties文件,其实还有一种文件,就是yml文件,只不过这种文件是需要自己创建的。这个配置文件是用来修改Springboot的默认配置的。比如说当我们集成了start-web之后,Springboot默认的web服务器是Tomcat,我们可以对Tomcat的默认配置做一些处理。配置文件能做的事情很多,语法也很简单。

properties 文件

1.语法

key=value

比如配置Tomcat的端口:server.port=8081

对大小写敏感。

2.优先级

一般情况下,properties可以在项目的4个地方存在,然后他们每个位置有不同的优先级,并且,不同名的时候application.properties的优先级是最高的,就是说,Springboot启动的时候,他会自己扫描指定路径下面的application.properties文件作为默认的配置文件。

扫描的包路径按照优先级有下面四个:

  1. file:./config/
  2. file:./
  3. classpath:/config/
  4. classpath:/

这么一说,你可能不知道在哪,来张图看看,第一个就是项目根目录下面的config文件下面的,第二个就是根目录下面的,第三个就是resources文件下面的config文件下面的,最后一个是resources文件下面的。

按照这个优先级,Springboot启动的时候会扫描这些包,然后将配置植入spring环境中,如果遇到相同的配置,优先级高的会覆盖优先级低的配置,比如说你有四个文件,四个文件里面都配置了项目启动端口,那么这个端口的配置只会用优先级最高的那个文件的配置。遇到不同的配置,这些配置就会互补,形成最大化的配置。

我们还可以通过spring.config.location 来改变默认的配置文件位置。但是需要先打包项目,这一块就留着后面再说,我会持续更新!你也可以wx search 全栈学习笔记!精彩美文每天推送!

3.自定义数据配置

配置文件除了能修改一些原本固有的配置,还能自定义配置。

自定义对象数据:



先定义一个student的对象,对象里面包含了常用的数据类型。

自定义的实体类:

如果遇到java的驼峰命名,在properties文件里面的命名就比较宽松,比如java里面用studentName,我在properties里面既可以用studentName,也可以用student-name,或者是student_name,都行。

这就是自定义数据的配置。下面看看怎么获取这些数据。

4.获取自定义数据配置

在配置文件中,有一些配置是springboot可以直接获得的,有一些是不能获取的,比如自定义的配置,像server.port这种属于原本有的默认配置,我们是做修改的。如果我们自定义了一些配置,就像上面我们定义的一些数据,就需要用其他方法获取了。

properties: 字符串默认不用加上单引号或者双引号

'' 单引号,会转义特殊字符

"" 双引号不会转义特殊字符

yml也是一样

项目结构图:

1.通过prefix获取

实体类的代码:

说明:将properties里面的student绑定到这个实体类上面,它会一一对应,这个源代码应该是用的反射和注解,反射,注解不会的可以看看我之前的文章哦!都是干货。

controller里面的测试代码:



代码填写完成之后重新运行环境然后查看你的运行端口,我的运行端口是8086



在浏览器输入:http://localhost:8085/student/getStudent

然后就能看到获取到数据了,获取到的数据:

但是你会看到这个数据获取到的中文是乱码,在idea里面需要设置一下。file->settings

设置完成点apply,这样好像原来的中文就是乱码了,然后你需要重新改回来,再重新启动项目就不会乱码了。

2.通过@value注解获取

这样显示的结果是只能获取到一个name,$是一个占位符号,利用这种语法,需要对实体类的每个属性一一对应,比较麻烦。建议使用第一种方法。

yml文件

1.语法

key空格:空格value

注意:空格不能少,大小写敏感

利用缩进代表层级关系,只要是缩进一样就代表是一级的

2.优先级

在既有yml文件也有properties文件的时候(其实还有一种yaml,和yml差不多的),yml加载顺序是先于properties的,所以优先级是properties大于yml,然后其他的情况下的优先级和properties文件是一样的。

3.自定义数据配置。

自定义数据的和properties文件差不多。写法上稍微有点差异,但是它的功能相对来说比较强大,代码简洁,可读性高。

4.获取自定义数据配置

1.通过prefix

不管是yml,还是properties文件,获取数据集都是一样用法。

2.通过@value注解获取

同上properties文件获取的方式。

springboot系列(三)配置文件详解的更多相关文章

  1. SpringBoot 使用(三): 配置文件详解

    代码从开发到测试要经过各种环境,开发环境,测试环境,demo环境,线上环境,各种环境的配置都不一样,同时要方便各种角色如运维,接口测试, 功能测试,全链路测试的配置,hardcode 肯定不合适,如S ...

  2. Hexo系列(二) 配置文件详解

    Hexo 是一款优秀的博客框架,在使用 Hexo 搭建一个属于自己的博客网站后,我们还需要对其进行配置,使得 Hexo 更能满足自己的需求 这里所说的配置文件,是位于站点根目录下的 _config.y ...

  3. nginx高性能WEB服务器系列之四配置文件详解

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  4. Nginx知多少系列之(三)配置文件详解

    目录 1.前言 2.安装 3.配置文件详解 4.Linux下托管.NET Core项目 5.Linux下.NET Core项目负载均衡 6.Linux下.NET Core项目Nginx+Keepali ...

  5. springBoot 中 logback配置文件详解

    logback介绍和配置详解 logback是Java的开源框架,性能比log4j要好.是springboot自带的日志框架.该框架主要有3个模块: logback-core:核心代码块(不介绍) l ...

  6. 深入浅出Mybatis系列三-配置详解之properties与environments(mybatis源码篇)

    注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇文章<深入浅出Mybatis系列(二)---配置简介(mybatis源码篇 ...

  7. Elasticsearch学习系列之配置文件详解

    ################################### Cluster ################################### #定义集群名称,默认是elasticse ...

  8. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  9. SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot2-config-file/ 本文出自方志朋的博客 ...

  10. SaltStack 入门到精通第三篇:Salt-Minion配置文件详解

    SaltStack 入门到精通第三篇:Salt-Minion配置文件详解 作者:ArlenJ  发布日期:2014-06-09 17:52:16   ##### 主要配置设置 ##### 配置 默认值 ...

随机推荐

  1. JUC-八锁现象和不安全锁

    1,被 synchronized 修饰的方法,锁的对象是方法的调用者(实例对象) 2,被 static 修饰的方法,锁的对象就是 Class模板对象,这个则全局唯一 问题7: 一个普通同步方法,一个静 ...

  2. 前端ps中常用的操作

    昨天,ui给了个psd图,让写成网页.额,要自己切图.很久之前,操作的还凑乎.但是,好久了,都忘了.所以,打算自己记个笔记,方便以后查看. 首先,打开ps就先来设置一下ps的单位啦点击最上面的一行的编 ...

  3. .Net Core 为 x86 和 x64 程序集编写 AnyCPU 包装

    前言 这几天研究了一下 vJoy 这个虚拟游戏手柄驱动,感觉挺好玩的.但是使用时发现一个问题,C# SDK 中的程序集被分为 x86 和 x64 两个版本,如果直接在 AnyCPU 平台编译运行就有隐 ...

  4. vue 动态加载图片路径报错解决方法

    最近遇到图片路径加载报错的问题 之前一直都是把图片放到assets的文件下的.总是报错,看到一些文章并且尝试成功了,特意记录下 首先先说明下vue-cli的assets和static的两个文件的区别, ...

  5. HDFS文件系统基操--Java实现

    Java实现对HDFS文件系统的基本操作 1.准备好jar包 2.创建一个类 1. 测试连接 @Test //测试是否连接成功 public void test() { //添加配置 ==> c ...

  6. MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)

    hello,小伙伴们,好久不见,MySQL系列停更了差不多两个月了,也有小伙伴问我为啥不更了呢?其实我去看了MySQL的全集,准备憋个大招,更新篇长文(我不会告诉你是因为我懒的). 好了,话不多说,直 ...

  7. go 创建slice的方式

    1.直接声明:var slice []int 2.new: slice := *new([]int) 3.字面量:slice := []int{1,2,3,4,5} 4.make: slice :=  ...

  8. Redis集群搭建及选举原理

    redis集群简述 哨兵模式中如果主从中master宕机了,是通过哨兵来选举出新的master,在这个选举切换主从的过程,整个redis服务是不可用的.而且哨兵模式中只有一个主节点对外提供服务,因此没 ...

  9. IPv6 时代如何防御 DDoS 攻击?

    在互联网世界,每台联网的设备都被分配了一个用于标识和位置定义的 IP 地址.20 世纪 90 年代以来互联网的快速发展,联网设备所需的地址远远多于可用 IPv4 地址的数量,导致了 IPv4 地址耗尽 ...

  10. 为什么 String 是 immutable 类

    二哥,你能给我说说为什么 String 是 immutable 类(不可变对象)吗?我想研究它,想知道为什么它就不可变了,这种强烈的愿望就像想研究浩瀚的星空一样.但无奈自身功力有限,始终觉得雾里看花终 ...