Spring Boot的配置文件

news2024/12/25 10:08:06

目录

配置文件的作用

配置文件的格式

properties配置文件

格式

注释乱码问题

 读取配置文件

 properties的优缺点分析

YAML

yml基本语法

yml配置的读取

注意事项:value的值加单双引号

配置对象

 yml优点分析

properties和yml的区别

设置不同环境的配置文件


配置文件的作用

整个项目中所有重要的数据都是在配置文件中配置的:

  • 数据库的连接信息(包含用户名和密码的设置)
  • 项目的启动端口
  • 第三方系统的调用密钥
  • 用于发现和定位问题的普通日志和异常日志

配置文件的格式

Spring Boot配置文件的格式有两种,一种是properties,一种是yml.

properties是创建Spring Boot项目时默认的文件格式,属于是旧版的配置文件;yml是近几年发展起来的格式,需要手动创建.两种格式的配置文件各有优缺点.

特殊说明

  1. 两个配置文件从功能上来讲是可以同时存在的,但是企业中通常会规定使用某一种格式的配置文件.
  2. 如果同一个配置出现在两种格式的配置文件中的话,以properties为主.也就是properties配置文件的优先级最高,但加载完properties文件之后,也会加载yml文件的配置信息.

properties配置文件

格式

格式就是key=value.

配置文件中有两种配置项:

  • 1.系统的配置项比如server.port/spring.datasource.url....,系统配置项必须是按照系统规定的去写.
  • 2.用户自定义的配置项,它的key是用户自定义的.

注释乱码问题

我们在配置文件中,用#来进行注释.

当我们注释完,在重启idea之后,打开配置文件,注释的文字有可能会出现乱码. 

这是因为当前配置文件默认的字符集是ISO-8859-1.

要解决这个问题,我们要在settings里搜索encoding,进入File Encoding,将这三个地方都改为UTF-8.

这里设置的是当前项目的字符集,我们还要设置新项目的字符集.

 步骤同上.

设置完成之后,删除原来的application.properties,创建一个新的application.properties,这样我们的配置文件才能支持中文.

也就是说我们要设置两个Settings,一个是当前项目的配置文件,另一个是新项目的配置文件.这就解决了注释会乱码的问题.


 读取配置文件

读取配置文件我们使用@Value("${名称}")的方式来读取.

package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody //加在类上,表示当前类中的所有方法返回的都是非静态页面的数据
//如果不加这个注解,return "hello world"就会去前端文件里找名字为hello world的页面
public class TestController {

    @Value("${id}")
    private int myConfig;
    @Value("${server.port}")
    private int port;

    @RequestMapping("/sayHi")
    public String sayHi(){
        return "hello world " + myConfig +"当前项目的端口号: " + port;
    }
}


 properties的优缺点分析

优点

  1. 是系统默认的配置文件
  2. properties配置项的优先级比yml高
  3. 格式简单,不容易出错

缺点:写法比较冗余.


YAML

yml是YAML的缩写,它的全称是Yet Another Markup Language,翻译成中文就是"另一种标记语言".

yml基本语法

yml是树形结构的配置文件,它的基础语法是key: value.注意冒号和value之间的空格不能省略.

yml配置不同的数据类型

 


yml配置的读取

yml读取配置的方式和properties相同.

package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody //加在类上,表示当前类中的所有方法返回的都是非静态页面的数据
//如果不加这个注解,return "hello world"就会去前端文件里找名字为hello world的页面
public class TestController {

    @Value("${string.value}")
    private String string1;
    @Value("${server.port}")
    private int port;

    @RequestMapping("/sayHi")
    public String sayHi(){
        return "hello world " + string1 +" 当前项目的端口号: " + port;
    }
}


注意事项:value的值加单双引号

从上述结果可以看出:

字符串默认是不用加上单引号和双引号的,单引号的特殊字符最终只是一个普通的字符串数据,双引号里的特殊字符会做为本身想表达的意思. 


配置对象

可以看到打印了对象的属性.

yml也可以配置list集合,但是几乎用不到.


 yml优点分析

  1. yml的可读性高,写法简单,易于理解,语法和JSON相似.
  2. yml支持更多的数据类型
  3. yml支持更多的编程语言,不仅可以在Java中使用,也可以使用在Golang,PHP,Python,Ruby,JavaScript,Perl中.

properties和yml的区别

1.properties是以 key=value 的形式配置的键值类型的配置文件,而yml使用的是类似json格式的树形配置方式进行配置的,yml 层级之间使用换行缩进的方式配置,key和value 之间使用“:”英文冒号加空格的方式设置,并且空格不可省略。
2.properties 为早期并且默认的配置文件格式,但其配置存在一定的冗余数据,使用yml可以很好的解决数据冗余的问题。
3.yml通用性更好,支持更多语言,如Java、Go、Python等,如果是云服务器开发,可以使用一份配置文件作为Java和Go的共同配置文件。
4.yml支持更多的数据类型。


设置不同环境的配置文件

一个项目至少有三个配置文件,因为有多个环境,开发环境,测试环境,生产环境,这三个环境所连接的数据库都是不同的.

设置不同环境的配置文件会让我们的工作更加高效且不容易出错.

通过一个需求实现来理解:

需求:开发环境端口号:6666,测试环境端口号7777,生产环境端口号8888.

配置不同环境的配置文件.Spring Boot已经帮我们设置了规则.

Spring Boot不同平台的配置规则:

  1. 必须有主配置文件,主配置文件名必须是application.yml(application.properties).
  2. 不同的环境平台有不同的配置文件,每一个平台拥有一个,配置的文件名称有要求:application-xxx.yml(application-xxx.application).

可以看到,此时的端口号,就是我们设置的活跃配置文件里写的端口号. 


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

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

相关文章

Linux-搭建web服务器

综合练习:请给openlab搭建web网站 ​ 网站需求: ​ 1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! ​ 2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于[www.…

SpringCloud --- Ribbon负载均衡

一、负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1,怎么变成了http://localhost:8081的呢? 二、源码跟踪 为什么我们只输入了service名称就…

浅谈: 计算机—JVM—Java线程—池

计算机的基本组成 计算机的基本组成 计算机存储模型(CPU、寄存器、高速缓存、内存、外存) 现代计算机系统CPU和内存之间其实是有一个cache的层级结构的。比内存速度更快的存储介质(SRAM),普通内存一般是DRAM,这种读写速度更快的介质充当CPU和内存之间的…

3 连续模块(二)

3.5 零极点增益模块 在控制系统设计和分析中,常用的函数包括 传递函数(tf)、零极点(zpk)和状态空间(ss)函数 传递函数(tf):用于表示线性时不变系统的输入输出…

SQL Compliance Manager Crack

SQL Compliance Manager Crack 新的SQL CM云代理-扩展了当前SQL CM代理的功能,以支持EC2上Microsoft SQL服务器的远程审核。允许用户添加在共享网络位置上活动的SQL Server,以写入/读取数据并支持DBaaS SQL Server实例。云代理包含与当前SQL代理相同的行…

VS code 插件之中英文间自动添加空格

前言 不知道大家在开发过程中是不是会遇到写代码注释或者文本内容时中英文之间没有空格的情况,很多时候在写代码尤其是写注释的时候容易忘记加空格,但回过头来看又难以忍受,于是我就想着自己写一个 vscode 插件来解决这个问题,希…

跟我一起开启 linux 的学习吧

跟我学 CentOS 的安装 一、安装 VMware二、创建虚拟机三、安装 CentOS 7四、linux 的登录 一、安装 VMware VMware 计算机虚拟化软件 从官网 https://www.vmware.com/cn.html 下载并安装 这里就不再展示安装过程啦! 有需要的可以 点击这里 →→→ VMware 下载安装过…

postgresql 源码结构分析

专栏内容:postgresql内核源码分析个人主页:我的主页座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 目录 前言 源码下载 源码结构 核心代码目录 结尾 前言 本文对postgresql源码目…

进销存管理系统和ERP的工作原理和实现方式有何不同?

一、ERP是什么? ERP即企业资源规划(Enterprise Resource Planning),是一种集成管理软件系统。它的目的是整合和规划各种企业资源和业务流程,包括财务、物流、采购、生产、销售等,以提高企业的管理效率和业…

Java -- IO流

IO流 主要用于读写数据 IO流按照流的方向可以分为以下两种: 输入流输出流 IO流按照操作文件类型可以分为以下两种: 字节流字符流 字节流可以操作所有类型的文件,而字符流只可以操作纯文本文件 #mermaid-svg-tfFZjSluOmEFUpyc {font-fam…

SVM-老师讲的真的很好!

支持向量机(Support Vector Machine) 如同逻辑回归一样,SVM是一个分类模型 目标 SVM解决分类模型的基本思路:什么是一个好的分类边界? SVM认为,好的分类决策边界应当是:类别边界的距离应当尽可能的远 目标函数 拉格朗日乘子法 那么我们的公式就可以写为

SIP协议之通话转接

一、介绍 在SIP协议应用中,有一个常用的功能叫通话转接,用于将接通后的通话转给第三方接听处理。 二、原理及流程 转接是通过SIP协议的一个扩展请求方法REFER实现的。呼叫转接由RFC5589(Session Initiation Protocol (SIP) Call Control - Transfer)定义…

(数字图像处理MATLAB+Python)第六章图像平滑-第一节:图像平滑概述和空间域平滑滤波

文章目录 一:图像中的噪声(1)图像噪声分类(2)图像噪声的数学模型(3)程序 二:空间域平滑滤波(1)均值滤波A:均值滤波原理B:示例C&#x…

203、【栈与队列】leetcode ——剑指 Offer II 040. 矩阵中最大的矩形 / 85. 最大矩形:暴力+单调栈(C++/Pyhont版本)

题目描述 Problem: 剑指 Offer II 040. 矩阵中最大的矩形 文章目录 题目描述解法一:暴力解法思路解题方法复杂度Code 解法二:单调栈解法 解法一:暴力解法 思路 首先, 按行获取到达某一元素位置时,之前与当前连续1的个…

【JUC高并发编程】—— 初见JUC

一、JUC 概述 什么是JUC JUC 是 Java并发编程的缩写,指的是 Java.util.concurrent 即Java工具集下的并发编程库 【说白了就是处理线程的工具包】 JUC提供了一套并发编程工具,这些工具是Java 5以后引入的,使得Java开发者可以更加方便地编写…

86页2023年新型智慧城市顶层设计规划解决方案(ppt可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 整体架构 智慧城市建设从顶层设计入手,结合软硬件资源整合能力,为公众提供全生命周期一站式服务管理。智慧城市的整体框架分为发展战略层、技术实施层…

HuggingFace入门教程--环境搭建

HuggingFace中文直译为”拥抱脸“,是最近非常火爆的一个人工智能社区,官网地址是:https://huggingface.co/ .关于HuggingFace的相关介绍大家可以自行百度。本文主要为刚入人工智能坑的小白指下路,同时也是逼着自己记录下学习过程中…

Cuckoo Filter

其他判重数据结构 Bloom Filter 无法支持删除和计数的功能,需要更多的存储空间来存储数据 因为在CS中,删除和计数是常见的操作,但是这会对布隆过滤器的存储空间产生影响,同样为了实现这一操作,需要更多的存储空间 数…

vue---父子、兄弟、跨层级关系组件通信

目录 1、props / $emit (父子通信) 2、$root、 $parent / $children(vue3废弃) 3、ref/$refs 4、EventBus ($emit / $on) 5、provideinject(依赖注入) 6、$attrs $listeners(透传&#x…

电子政务网络智慧运维方案

随着电子政务建设的深入,我国政府的信息化建设已经具备了一定的规模,形成了部、省、市、县四级体系;大型政务服务事项、公文流转、行政审批、费税征缴、信息公开、网格化社会管理、三网融合、智慧城市建设等大量政府核心业务越来越依赖信息化…