Spring Boot的配置文件

配置文件的作用

整个项目中所有重要的数据都是在配置文件中配置,如数据库的连接信息,项目的启动端口,用于发现和定位问题的普通日志和异常日志等等。配置文件可以分为两类

  1. 系统使用的配置文件(系统配置文件),如端口号的设置,连接数据库的配置
  2. 用户自定义的配置文件

配置文件的格式

Spring Boot的配置文件可以分为 .properties和 .yml两种格式。.properties属于早期时代的格式,也是Spring Boot项目的默认配置文件。当一个项目中存在两种格式的配置文件,并且两个配置文件都设置了相同的配置项,但值不同,那么properties的优先级更高。通常在一个项目中只会存在一种格式的配置文件。

properties的用法

  1. properties是以键值的形式配置的,key和value之间用“=”连接,中间没有空格。
# 系统配置端口号
server.port=8888
# 自定义配置
name=zhangsan
  1. 使用@Value注解使用${}的格式读取配置文件
@RestControllerpublic class Controller {@Value("${name}")//要和配置文件中的key值相同private String name;@PostConstructpublic void sayHi() {System.out.println("hi: " + name);}}

image.png
:::info

  1. propertices的缺点
    :::
    image.png
    我们发现properties有很多冗余信息,而使用yml就可以很好的解决

yml配置文件

yml的优点

  1. yml写法简单,可读性高
  2. yml支持更多数据类型,如数组,对象
  3. yml支持多语言

稍微规模大点的公司都开始使用微服务,像字节内部有java,go,python,php语言,只关心业务是否能够实现,使用什么语言并不关心。如果使用properties配置文件就要写多份,而yml就很好的解决了这个问题。

key: value

注意:key和value之间使用冒号和空格组成
yml版本的连接数据库
image.png

yml进阶

配置不同数据类型
#字符串
string.value: hello
#布尔值
boolean.value: true
boolean.value2: false
#整数
int.value: 10
#浮点数
float.value: 3.14
#空值,~表示Null
null.value: ~

读取配置文件中的基础类型使用@Value(“${}”)注解

@RestControllerpublic class Controller {//要和key值对应@Value("${string.value}")private String hello;@PostConstructpublic void postConstruct() {System.out.println(hello);}@Value("${boolean.value}")private boolean bool;@PostConstructpublic void postConstruct2() {System.out.println(bool);}@Value("${null.value}")private Integer integer;@PostConstructpublic void postConstruct3() {System.out.println(integer);}}

image.png
:::success
注意:value值加单/双引号
:::

string:str1: hello \n Spring Bootstr2: 'hello \n Spring Boot'str3: "hello \n Spring Boot"
@RestController
public class Controller {@Value("${string.str1}")private String str1;@PostConstructpublic void construct1() {System.out.println("str1: " + str1);}@Value("${string.str2}")private String str2;@PostConstructpublic void construct2() {System.out.println("str2: " + str2);}@Value("${string.str3}")private String str3;@PostConstructpublic void construct3() {System.out.println("str3: " + str3);}
}

image.png
由上可知

  1. 字符串默认不用加上单引号或者双引号
  2. 单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据
  3. 双引号不会转义字符串里面的特殊字符,特殊字符会作为本身想表示的意思
配置对象
#自定义一个对象,两种写法
#student:
#  id: 1
#  name: zhangsan
#  age: 18
student: {id: 1, name: zhangsan, age: 18}

读取配置文件中的对象使用@ConfigurationProperties注解

@Component
//三种写法
//@ConfigurationProperties(value = "student")
//@ConfigurationProperties(prefix = "student")
@ConfigurationProperties("student")
@Data //需要提供get,set方法才能够把配置文件的信息读取出来
public class Student {//类型和名字要一一对应private int id;private String name;private int age;
}

配置集合
#自定义集合
#list:
#  array:
#    - 1
#    - 2
#    - 3
list: {array: [1,2,3]}

读取配置文件中的集合使用@ConfigurationProperties

@Component@ConfigurationProperties("list")@Datapublic class MyList {private List<Integer> array;}

properties和yml的区别

  1. properties是以key=value的形式进行配置,而yml是使用类json格式。
  2. properties为早期且默认的配置文件格式,其配置存在一定的冗余数据,使用yml可以很好的解决数据冗余的问题
  3. yml通用性更好,支持多种语言,例如开发一个云服务器,可以使用同一份配置文件作为java和go的共同配置文件
  4. yml支持更多的数据类型

设置不同环境的配置文件

在一个项目中有多种环境,如开发环境,测试环境,生产环境。每个环境的配置项都有所不同,如何让一个配置文件适应不同的环境呢?
image.png
把配置文件设为生产环境

spring:profiles:active: prod
server:port: 9999
server:port: 7777

image.png
此时使用的就是生产环境配置的端口号

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

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

相关文章

【Kotlin】

Lambda 就是一小段可以作为参数传递的代码。 因为正常情况下&#xff0c;我们向某个函数传参时只能传入变量&#xff0c;而借助Lambda 却允许传入一小段代码。 Lambda 表达式的语法结构&#xff1a; {参数名1: 参数类型, 参数名2: 参数类型 -> 函数体}首先&#xff0c;最外…

JS基础源码之手写模拟new

JS基础源码之手写模拟new 手写模拟new初步实现最终实现 手写模拟new new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一。 我们先看看new实现了哪些功能&#xff1a; function Person (name,age){this.name name;this.age age;this.habit Games;…

开发猿的平平淡淡周末---2023/12/9

上周回顾 完成了遗留的开发任务&#xff0c;基本全部完成进一步了解了系统当时设计的原理熟悉了代码的重构 2023.12.9 天气晴 温度适宜 前言 小伙伴们大家好&#xff0c;时间很快&#xff0c;又来到了周末&#xff0c;也是一个平平淡淡的周末。上周只更了一篇博客...原…

渗透测试 | 渗透测试之信息收集

渗透测试&#xff08;penetration test&#xff0c;pentest&#xff09;是实施安全评估&#xff08;即审计&#xff09;的具体手段。 渗透测试可能是单独进行的一项工作&#xff0c;也可能是常规研发生命周期&#xff08;例如&#xff0c;Microsoft SDLC&#xff09;里 IT 安全…

Unicode编码解码

一、Unicode概述 Unicode是一种字符编码标准&#xff0c;旨在解决不同字符集之间的兼容性问题。它为全球所有语言提供了一种统一的编码方式&#xff0c;使得各种字符能够在计算机系统中正确显示和处理。Unicode字符集包含了世界上几乎所有的字符&#xff0c;包括中文字符、英文…

算法Day23 简单吃饭(0-1背包)

简单吃饭&#xff08;0-1背包&#xff09; Description Input Output Sample 代码 import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int total scanner.nextInt(…

WebDriver核心方法和属性:掌握自动化测试的利器

在自动化测试中&#xff0c;Selenium WebDriver是一个非常重要的工具。它提供了一种方式来模拟用户与浏览器的交互&#xff0c;从而进行各种操作&#xff0c;如点击按钮、输入文本等。本文将介绍WebDriver的核心方法和属性&#xff0c;以及如何使用它们。 1. 启动和关闭浏览器…

使用es256算法生成jwt

1、使用hutool来做 1、先去jwt解密/加密 - bejson在线工具弄个公私钥 2、导入hutool maven <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.22</version></dependency><depe…

高项备考葵花宝典-项目进度管理输入、输出、工具和技术(中,很详细考试必过)

项目进度管理的目标是使项目按时完成。有效的进度管理是项目管理成功的关键之一&#xff0c;进度问题在项目生命周期内引起的冲突最多。 小型项目中&#xff0c;定义活动、排列活动顺序、估算活动持续时间及制定进度模型形成进度计划等过程的联系非常密切&#xff0c;可以视为一…

Pytorch中的resize和reshape

torch.reshape() 官方文档的大致意思是&#xff1a; 返回与输入具有相同数据和元素数量的张量&#xff0c;但是具有指定形状。如果可能&#xff0c;返回的张量将是输入的视图&#xff0c;也就是说原本的tensor并没有被改变&#xff0c;如果想要改变那么就将改变的tensor赋值给…

情深不必纠缠

那一年&#xff0c;男孩女孩在万千人中相遇了。多年后女人的一封邮件&#xff0c;让男人与女人的灵魂相遇了。他们无缘夫妻&#xff0c;却发现彼此是灵魂的陪伴。不能携手相守&#xff0c;却懂得彼此的心灵。 有一天&#xff0c;女人告诉男人要回家了&#xff0c;问男人心里会不…

ejs —— 三目运算符的用法

EJS&#xff08;Embedded JavaScript&#xff09;是一种简单的模板语言&#xff0c;它允许将JavaScript代码嵌入到HTML中。在EJS中&#xff0c;<%、<%和<%-是用于将JavaScript代码嵌入到模板中的语法。 <%&#xff1a;这是EJS的输出表达式&#xff0c;用于将变量的…

阿里云安装docker

文章目录 一、 yum 进行安装&#xff08;os版本 CentOS 7&#xff09; 推荐二、 apt-get 进行安装(os版本 Ubuntu 14.04/16.04&#xff09;三、测试四、阿里云docker加速 一、 yum 进行安装&#xff08;os版本 CentOS 7&#xff09; 推荐 # step 1: 安装必要的一些系统工具 su…

<HarmonyOS第一课>应用服务上架【课后考核】

【习题】HarmonyOS应用/元服务上架 判断题 元服务发布的国家与地区仅限于“中国大陆” 正确(True) 编译打包的软件包存放在项目目录build > outputs > default下 正确(True) 单选题 创建应用时&#xff0c;应用包名需要和app.json5或者config.json文件中哪个字段保持…

VMware安装Ubuntu20.04并使用Xshell连接虚拟机

文章目录 虚拟机环境准备重置虚拟网络适配器属性&#xff08;可选&#xff09;配置NAT模式的静态IP创建虚拟机虚拟机安装配置 Xshell连接虚拟机 虚拟机环境准备 VMware WorkStation Pro 17.5&#xff1a;https://customerconnect.vmware.com/cn/downloads/details?downloadGr…

基于Java旅游信息管理系统

基于Java旅游信息管理系统 功能需求 1、旅游目的地管理&#xff1a;系统需要能够记录和管理各个旅游目的地的详细信息&#xff0c;包括景点介绍、交通方式、住宿推荐等。管理员可以添加、编辑和删除目的地信息。 2、旅游线路规划&#xff1a;系统需要提供旅游线路规划功能&a…

C++类名后面跟大括号和跟小括号的区别

在 C 中&#xff0c;类名后面跟着大括号 {} 和小括号 () 有不同的含义和作用。 大括号 {}&#xff1a; 初始化对象&#xff1a;当在声明类对象时使用大括号 {} 时&#xff0c;这表示对对象进行初始化。这种方式也称为列表初始化或者统一初始化。示例&#xff1a;MyClass obj{};…

网上下载的pdf文件,为什么不能复制文字?

不知道大家有没有到过这种情况&#xff1f;在网上下载的PDF文件打开之后&#xff0c;发现选中文字之后无法复制。甚至其他功能也都无法使用&#xff0c;这是怎么回事&#xff1f;该怎么办&#xff1f; 当我们发现文件打开之后&#xff0c;编辑功能无法使用&#xff0c;很可能是…

AlexNet

概念 过拟合:根本原因是特征维度过多&#xff0c;模型假设过于复杂&#xff0c;参数过多&#xff0c;训练数据过少&#xff0c;噪声过多&#xff0c;导致拟合的函数完美的预测训练集&#xff0c;但对新数据的测试集预测结果差。 过度的拟合了训练数据&#xff0c;而没有考虑到…

29、卷积 - 参数 padding 的作用

在卷积过程中,Padding(填充)是一个关键的概念,它对于保留输入信息和有效地处理边缘信息至关重要。 1、Padding是什么? Padding 指的是在输入图像的周围添加额外的像素值,用来以扩大输入图像的尺寸,这些额外填充的像素值通常设置为零,卷积操作在这个填充后的输入图像上…