JavaEE进阶第六课:SpringBoot配置文件

news2024/10/2 22:17:20

上篇文章介绍了SpringBoot的创建和使用,这篇文章我们将会介绍SpringBoot配置文件

目录

  • 1.配置文件的作用
  • 2.配置文件的格式
    • 2.1 .properties语法
      • 2.1.1.properties的缺点
    • 2.2 .yml语法
    • 2.2.1优点分析
    • 2.2.2配置与读取对象
    • 2.2.3配置与读取集合
    • 2.2.4补充说明
  • 3.设置不同环境的配置文件
  • 结束语

1.配置文件的作用

上一篇我们介绍到,SpringBoot有个很厉害的功能叫自动装配,其中要利用的就是我们的配置文件。那么具体配置文件有什么用呢?

整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:

  • 数据库的连接信息(包含⽤户名和密码的设置);
  • 项⽬的启动端⼝; 第三⽅系统的调⽤秘钥等信息;
  • ⽤于发现和定位问题的普通⽇志和异常⽇志等。

如果没有配置信息,那么 Spring Boot项⽬就不能轻易的更改连接和操作数据库,甚⾄是不能保存可以⽤于排查问题的关键⽇志,所以配置⽂件的作⽤是⾮常重要的。

2.配置文件的格式

对于SpringBoot的配置文件,主要有以下两种格式

  • .properties 旧
  • .yml 新

对于这两种配置文件格式来讲,创建SpringBoot项目默认的是老款.properties
在这里插入图片描述

当然我们叶可以主动换成新款.yml,注意文件的名称必须是application哦,这属于一种约定,后面有特殊情况会介绍。
在这里插入图片描述
写到这里,大家可能会有疑问了,这两种配置文件可以共存吗?如果可以的话,会以哪个配置文件的内容为先呢?

对于这个问题,首先两者是可以共存的,且SpringBoot扫描配置文件时都会扫描,但当出现两个配置文件设置了相同的配置项但值不同时,会采纳.properties格式,毕竟以老员工为主。

设置启动端口
.yml 9999
在这里插入图片描述
.properties 8888
在这里插入图片描述
运行得到结果:8888
在这里插入图片描述

当然啦,实际开发肯定是统一格式才好看

2.1 .properties语法

.properties采用key=value的格式
在这里插入图片描述
(注:# 代表注释)
配置完成后,如何读取配置信息呢?
通过注解@Value(“${key}”) 来获取信息:

@Controller
public class MyTest {
    @Value("${mytest}")
    public String mytest;

    @PostConstruct
    public void test1(){
        System.out.println("mytest:"+mytest);
    }
}

在这里插入图片描述

@Controller在 Spring Boot 启动时候会注⼊到框架中,注⼊到框架中时会执⾏ @PostConstruct初始化⽅法,这个时候就能读取到配置信息了

2.1.1.properties的缺点

观察我们配置的数据库连接,可以发现代码很冗余,spring.datasource多次出现,这是不好的,因为当配置项十分多时,代码就会很难看;同时.properties还不能处理中文字符,容易乱码,就像我们把zhangsan改为张三,再一次运行:
在这里插入图片描述
要解决这些问题,需要使用到新款.yml

2.2 .yml语法

yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略。
基础语法如下:

server:
  port: 9999

# 设置数据库配置项
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
    username: root
    password: root

这里面的空格都很有讲究,不要轻易的删增。
在这里插入图片描述
比如,这一块就是根据空格来确定这是几级结构的。

.yml的读取和.properties相同,都是通过@Value注解:
在这里插入图片描述
通过.yml,我们的代码不再那么冗余,但这是不够的,因为yml远远不止如此

2.2.1优点分析

1.首先写法更简单,代码冗余度也低
2.支持更多数据类型,包括整数,字符串,对象,数组等等
3.支持更多语言,不只是Java

2.2.2配置与读取对象

配置对象
方案1:

# 自定义配置项
student:
  name: 张三
  age: 15

方案二:

student: {name: 张三,age: 15}

//注意:后面有一个空格

读取对象
实体类:

@Component
@ConfigurationProperties(prefix = "student")//1.使用该注解
@Data//类中属性要和配置对象名对应相同,且提供getter和setter方法
public class Student {
    public String name;
    public int age;

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

调用类:

@Component
public class MyStu {
    @Autowired
    public Student stu;

    @PostConstruct
    public void test(){
        System.out.println(stu);
    }

}

结果:
在这里插入图片描述

2.2.3配置与读取集合

配置集合:

tag:
  name:
    - 张三
    - 李四
    - 王五

#tag: {name: [张三,李四,王五]}

两种方案均可
读取集合:
和读取对象一样,先创建实体类,加上注解,然后调用即可,一模一样。

2.2.4补充说明

在yml语法中,key:value的value的值有没有单,双引号是值得讨论的问题,我们看下面这个例子:

添加字符串配置项:
在这里插入图片描述
读取这这个字符串并打印:
在这里插入图片描述
可以发现,加了双引号的中转义字符\n(换行)正常生效了,无引号和单引号的\n被当作了普通字符串打印了出来,所以这里大家使用时要注意哦!

3.设置不同环境的配置文件

一般来说,实际开发下可能会有很多种配置文件,比如开发版,正式版等等,我们想切换肯定不是现写,而是已经写好了直接更换就行,这里就要用到配置文件中一个配置项:

  • spring.profiles.active

通过设置它的值,来切换配置文件。
前面我们说配置文件的名称application是不能乱改的,但是这里属于特殊情况,我们可以在其后添加

  • application-名称
    配置项设置:
    active的值就是-后面的名称
    在这里插入图片描述

比如说-dev里面启动端口为9999,-new为8888,最后运行结果:
在这里插入图片描述
想变8888,只要active换成new即可!

结束语

那么本节课就到此结束啦,下一节课我们将会进入SpringBoot日志文件的学习!喜欢的话,请多多关注我哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/380209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

陪诊小程序开发|陪诊小程序有哪些功能

陪诊小程序主要就是一款为服务一些无法单独或者很难单独完成就诊流程的人,提供线上下单寻求专业人员陪同就医的一款小程序,陪诊员线上接单,线下为患者提供专业的医疗陪同就医服务。相对于陪诊小程序开发多少钱很多人更想知道陪诊小程序有哪些…

动态规划:leetcode 139.单词拆分、多重背包问题

leetcode 139.单词拆分leetcode 139.单词拆分给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1&…

数据库设计规范1

数据库设计规范1 1.所有的表都必须有几个公共字段 这里建有删除标识,代表着我们所有的删除都是软删除。所以我们的删除操作其实是updata 2.id等数字类型的字段,不能知识bigint,应该是bigint unsigned 3.varchar默认长度为32,不…

MTK平台开发入门到精通(Thermal篇)热管理介绍

文章目录 一、热管理组成二、Linux Thermal Framework2.1、thermal_zone 节点2.2、cooling_device 节点三、Thermal zones沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍MTK平台的热管理机制,热管理机制是为了防止模组在高温下工作导致硬件损坏而存在的…

有趣的 Kotlin 0x10:操作符 ..<

操作符 …< ..< 操作符是 Kotlin 在 1.7.20 版本中引入的不包含尾部元素的左闭右开区间操作符。之前我们使用的比较多的操作符可能是 .. 和 until&#xff0c;两者均表示区间&#xff0c;前者是闭区间&#xff0c;后者则表示不包含末端元素的左闭右开区间。 OptIn(Expe…

C++ STL学习之【string类的模拟实现】

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f38a;每篇一句&#xff1a; 图片来源 The key is to keep company only with people who uplift you, whose presence calls forth your best. 关键是只与那些提升你的人在一起&#xff0c…

机器学习与目标检测作业(数组相加:形状需要满足哪些条件)

机器学习与目标检测&#xff08;数组相加:形状需要满足哪些条件&#xff09;机器学习与目标检测&#xff08;数组相加:形状需要满足哪些条件&#xff09;一、形状相同1.1、形状相同示例程序二、符合广播机制2.1、符合广播机制的描述2.2、符合广播机制的示例程序机器学习与目标检…

模电学习9. MOS管使用入门

模电学习9. MOS管使用入门一、mos管理简介1. 简介2. mos管理的特点3. MOS管的工作状态&#xff08;1&#xff09;放大功能&#xff08;2&#xff09;截止区&#xff08;3&#xff09;饱和区3. Mos管的分类&#xff08;1&#xff09;按照工作模式分类&#xff1a;&#xff08;2&…

25. K 个一组翻转链表

题目链接&#xff1a;https://leetcode.cn/problems/reverse-nodes-in-k-group/解题思路&#xff1a;先解决怎么翻转一段链表&#xff0c;然后在解决这道题。翻转一个链表reverse(head,tail)比如将链表1->2->3->4进行翻转&#xff0c;则翻转后的链表为&#xff1a;1&l…

Guitar Pro8免费吉他曲谱mySongBook

每周都会发布新的谱子&#xff0c;目前已有有数千首歌曲可供选择&#xff0c;在谱库中&#xff0c;您能找到 Guns N Roses&#xff0c;Miles Davis&#xff0c;Ed Sheeran 等人的经典曲目。开头我们先做一个小实验&#xff1a;现在打开你电脑里存放曲谱的文件夹&#xff0c;里面…

记录每日LeetCode 2373.矩阵中的局部最大值 Java实现

题目描述&#xff1a; 给你一个大小为 n x n 的整数矩阵 grid 。 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵 maxLocal &#xff0c;并满足&#xff1a; maxLocal[i][j] 等于 grid 中以 i 1 行和 j 1 列为中心的 3 x 3 矩阵中的 最大值 。 换句话说&#xff0c;我们希…

基于Linux_ARM板的驱动烧写及连接、挂载详细过程(附带驱动程序)

文章目录前言一、搭建nfs服务二、ARM板的硬件连接三、putty连接四、挂载共享文件夹五、烧写驱动程序六、驱动程序示例前言 本文操作环境&#xff1a;Ubuntu14.04、GEC6818 这里为似懂非懂的朋友简单叙述该文章的具体操作由来&#xff0c;我们的主要目的是将写好的驱动程序烧进…

教你如何搭建设备-报修管理系统,demo可分享

1、简介1.1、案例简介本文将介绍&#xff0c;如何搭建设备-报修管理。1.2、应用场景对于故障的设备发起报修流程&#xff0c;指派人员维修&#xff0c;可查看设备维修记录。2、设置方法2.1、表单搭建1&#xff09;新建表单【设备档案-履历表】&#xff0c;字段设置如下&#xf…

低能高效打工人-查找被引文献的大牛

目录 本分享主要目标&#xff1a; Part 1 1、根据文章在wos将所需要的数据导出至excel。 2、如何判断大牛和搜索大牛 Part 2 1、下载大牛对应的文章并标记 2、文献下载 本分享主要目标&#xff1a; 1、找出引用 导师的文献 的大牛 2、根据大牛下载对应的文章并标记 Pa…

【验证码逆向专栏】某验三代、四代一键通过模式逆向分析

声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 本文章未经许可禁止转载…

进程控制

文章目录进程控制子程序与父程序区别进程创建进程终止进程等待进程替换进程控制 多进程是程序进行的基本功能&#xff0c;所需要进行基础控制的操作。用来减少因为单核性能不足的原因造成的系统卡死。 子程序与父程序区别 完全继承父进程相关的内存块和数据块&#xff0c;拷贝…

【工具插件类教学】UnityPackageManager私人定制资源工具包

目录 一.UnityPackageManager的介绍 二.package包命名 三.包的布局 四.生成清单文件 五.制作package内功能 六.为您的软件包撰写文档 1.信息的结构 2.文档格式 七.提交上传云端仓库 1.生成程序集文件 2.上传至云端仓库 八.下载使用package包 1.获取包的云端路径 …

Arduino IDE启动闪退或者运行中闪退

文章目录一、你中了哪一种&#xff1f;1、安装了不符合规格的库文件2、安装了不符合规范的开发板库文件二、解决方案1、轻方案2、全盘重来Arduino IDE启动闪退或者运行中闪退&#xff0c;出现这样的问题&#xff0c;其实不需要思考了&#xff0c;就是运行库配置的问题&#xff…

clion在linux设置桌面启动图标(jetbrains全家桶均适用)

clion在linux设置桌面启动图标&#xff08;jetbrains全家桶均适用&#xff09; 网上大部分步骤都只是pycharm的教程&#xff0c;其实对于jetbrains全家桶都适合&#xff0c;vs code编辑器也可以这样。 刚开始是使用pycharm在linux设置的教程&#xff0c;参照&#xff1a;http…

计算机组成原理4小时速成3:存储器,主存ROM,RAM,cache高速缓存,辅存外设,地址编址方案,汉明码检错纠错

计算机组成原理4小时速成3&#xff1a;存储器&#xff0c;主存ROM,RAM&#xff0c;cache高速缓存&#xff0c;辅存外设&#xff0c;地址编址方案&#xff0c;汉明码检错纠错 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;…