SpringBoot项目配置文件

news2024/11/27 4:19:53

文章目录

    • 一、配置文件作用
    • 二、配置文件格式
    • 三、properties配置文件说明
      • 基本语法
      • 读取配置文件
      • 优缺点
    • 四、yml配置文件说明
      • 基本语法
      • 使用yml连接数据库
      • 使用yml配置不同数据类型及null
      • yml配置的读取
      • 配置字符串的单双引号问题
      • 配置对象
    • 两种格式配置文件对比
    • properties格式配置文件示例
    • yml格式配置文件示例
    • 设置不同环境配置文件演示

一、配置文件作用

存放项目中比较重要的数据

比如数据库的连接信息(包括用户名和密码设置)、项目的启动端口、第三方系统的调用密匙等信息、用于发现和排查定位问题的普通日志和异常日志等。

二、配置文件格式

SpringBoot配置文件主要分为两种格式.properties.yml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KxZ0dj8u-1691464486374)(F:\typora插图\image-20230509161053491.png)]

其中.properties类型的配置文件是默认的,两者可以同时存在,但实际开发中公司会规定使用哪一种。

properties类型的适合新手,不容易出错但是比较繁琐;yml比较简洁但是容易出错。一般初学使用前者,实际开发中后者使用居多。

下边详细说明,并进行对比。

三、properties配置文件说明

基本语法

键值形式:key=value

如:server.port=9090

读取配置文件

一般来讲,配置文件会随着spring容器的启动而自动加载,但是也可以主动读取配置文件中的内容,通过@Value注解实现。

使用方式:@Value+“${}”格式读取

例如:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WXzRnI8R-1691464486374)(F:\typora插图\image-20230509162213332.png)]

package com.example.demo.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class ReadConfig {
    @Value("${server.port}")
    private String port;//这里接受类型一般是String,一般什么都能接收
    @PostConstruct
    public void postConstruct(){
        System.out.println("Read Config:port:"+port);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iM2ZNCz2-1691464486375)(F:\typora插图\image-20230509162248225.png)]

优缺点

优点1.是默认的 2.优先级高于yml 3.写法简单,不易出错
缺点1.写法比较冗余

为什么说比较冗余呢?

看这几个配置项即可:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-32gkGoZj-1691464486375)(F:\typora插图\image-20230509162550735.png)]

而同样的配置项在yml格式下就会简便很多,如下所示:

spring:
    datasource:
    	url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
    	username: root
    	password: root

四、yml配置文件说明

基本语法

key: value

例如:

server:
	port: 9090

注意:冒号后边要加空格,不然不生效!!!!!

使用yml连接数据库

spring:
	datasource:
        url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
        username: root
        password: root

使用yml配置不同数据类型及null

# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~

yml配置的读取

读取配置的⽅式和 properties 相同,使⽤ @Value 注解即可 。

注:这里需要把properties文件删了,不然读不到yml的配置

package com.example.demo.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class ReadConfig {
    @Value("${server.port}")
    private String port;//这里接受类型一般是String,一般什么都能接收
    @PostConstruct
    public void postConstruct(){
        System.out.println("Read Config:port:"+port);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajDBvrYt-1691464486376)(F:\typora插图\image-20230509163606523.png)]

注意:读取值为 null 的配置和根本不存在的配置结果不⼀致,是两回事,要注意区分。前者能正常启动而后者直接报错。

配置字符串的单双引号问题

准备工作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CeRqRtH8-1691464486376)(F:\typora插图\image-20230509164434054.png)]

package com.example.demo.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class ReadConfig {
    @Value("${string.str1}")
    private String str1;
    @PostConstruct
    public void postConstruct1(){
        System.out.println("Read Config:str1"+str1);
    }

    @Value("${string.str2}")
    private String str2;
    @PostConstruct
    public void postConstruct2(){
        System.out.println("Read Config:str2"+str2);
    }

    @Value("${string.str3}")
    private String str3;
    @PostConstruct
    public void postConstruct3(){
        System.out.println("Read Config:str3"+str3);
    }
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JWrW2xGP-1691464486377)(F:\typora插图\image-20230509164407301.png)]

结论:

  1. 字符串默认不需要加单双引号
  2. 单引号中转义字符只是一个普通的字符串数据
  3. 双引号中,转义字符串会表达出来对应的特殊含义

配置对象

使用@ConfigurationProperties注解:

package com.example.demo.component;

import lombok.Data;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "student")
@Component
@Data
public class StudentComponent {
    private int id;
    private String name;
}

向ReadConfig中添加代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m9hBIiTQ-1691464486377)(F:\typora插图\image-20230509165612780.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4s7AvpDo-1691464486377)(F:\typora插图\image-20230509165510178.png)]

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b5FoUC3V-1691464486378)(F:\typora插图\image-20230509165456316.png)]

另外,还可以配置集合读取集合,当然他也是使用@Configuration来做的

系统配置项很多,有需要查看官网即可

两种格式配置文件对比

  1. 语法格式上不同,properties使用=连接key和value,yml使用:+空格+换行缩进连接key和value
  2. 通用性上不同,yml支持更多语言

properties格式配置文件示例

补充:两种文件都可以使用#写注释

[外链图片转存中...(img-nlO4W1of-1691464486378)]

yml格式配置文件示例

[外链图片转存中...(img-NMJeoq0f-1691464486379)]

设置不同环境配置文件演示

设置成开发环境的端口号:

[外链图片转存中...(img-eoEoExdL-1691464486379)]

设置成测试环境的端口号同样能启动:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iRguo1V8-1691464486379)(F:\typora插图\image-20230509172024790.png)]

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

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

相关文章

Keburnetes YAML配置文件管理

Kubernetes 支持 YAML 和 JSON 格式管理资源对象JSON 格式:主要用于 api 接口之间消息的传递YAML 格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读 YAML 语法格式 大小写敏感使用缩进表示层…

Linux之AWK

目录 Linux之AWK 定义 语法格式 常用选项 awk 变量 内置变量 格式 案例 (1)编写一个文本名字叫做awkdemo,里面内容如下 (2)FS指定输入分隔符 (3)OFS指定输出分隔符 (4&#xf…

EditText设置inputType=“textPassword“后hint 英文字体不对,而且不能换行

问题如题,我先上图看下遇到的问题 ( ps: 我只想唱一句 : 你这该死的安卓~~ 让我心在痛 累在流!!!) 很明显字体偏大,字间隔很宽,关键还不会换行, 看一下我们需要的效果: 看到只要把 android:inputType"textPassword" 这一行干掉 一切就是我们想要的,但是产…

sonar 错误 提示 Synchronize on a new “Object“ instead.使用Id 作为锁

文章目录 错误分析先看sonar 给解决方案最终解决方案 public void synchronizedMethod(Integer id) {synchronized (id) {// Code to be synchronized}}错误分析 Synchronize on a new "Object" instead. 不应该在原始包装器(即整数、长整型、布尔值等&am…

HDFS中的Trash垃圾桶回收机制

Trash垃圾桶回收机制 文件系统垃圾桶背景功能概述Trash Checkpoint Trash功能开启关闭HDFS集群修改core-site.xml删除文件到trash删除文件跳过从trash中恢复文件清空trash 文件系统垃圾桶背景 回收站(垃圾桶)是windows操作系统里的一个系统文件夹&#…

c#设计模式-创建型模式 之 工厂模式

前言: 工厂模式(Factory Pattern)是一种常用的对象创建型设计模式。该模式的主要思想是提供一个创建对象的接口(也可以是抽象类、静态方法等),将实际创建对象的工作推迟到子类中进行。这样一来&#xff0c…

华为认证 | 云计算HCIE3.0改版后有什么变化?

随着技术的不断进步和行业的发展,云计算的HCIE作为华为公司的顶级认证,也进行了版本的更新。 那改版后有哪些变化呢,今天给大家讲讲。 01 HCIE认证简介 HCIE认证是华为公司旗下的顶级专业认证,面向IT领域的高级专业人士。 它涵…

华为数通题库,新一波分享来袭(有答案哟)

1、以下关于OSPF的Router ID描述不正确的是()。(多选) A. OSPF协议正常运行的前提条件是该路由器有Router ID B. Router ID必须是路由器某接口的IP地址 C. 必须通过手工配置方式来指定Router IDD. 在同一区域内Router I D必须相同…

MobiSys 2023 | 基于毫米波振动测量的无接触材料识别

注1:本文系“无线感知论文速递”系列之一,致力于简洁清晰完整地介绍、解读无线感知领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; MobiCom, Sigcom, MobiSys, NSDI, SenSys, Ubicomp; JSAC, 雷达学报 等)。本次介绍的论文是:《MobiSys 2023 | 基于毫米波振…

高忆管理:股票低开说明什么?股价跟什么有关?

股票的开盘价和收盘价是投资者重视的重要指标,它反映了股票价值的变化。那么股票低开阐明什么?股价跟什么有关?高忆管理也为大家预备了相关内容,以供参阅。 股票低开阐明什么? 股票低开是指股票的开盘价低于上一个交易…

SpringCloud(31):Nacos配置管理基础应用

1 Nacos配置管理模型 对于Nacos配置管理,通过Namespace、group、Data ID能够定位到一个配置集。 配置集(Data ID) 在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置信息,例如,一个配置集…

C 语言的转义字符

转义字符也叫转移序列&#xff0c;包含如下&#xff1a; 转移序列 \0oo 和 \xhh 是 ASCII 码的特殊表示。 八进制数示例&#xff1a; 代码&#xff1a; #include<stdio.h> int main(void) {char beep\007;printf("%c\n",beep);return 0; }结果&#xff1a; …

IntelliJ IDEA Bookmark使用

1 增加 右键行号栏 2 查看 从favorite这里查看 参考IntelliJ IDEA 小技巧&#xff1a;Bookmark(书签)的使用_bookmark idea 使用_大唐冠军侯的博客-CSDN博客

刘汉清:从生活到画布,宠物成为灵感源泉

出生于中国镇江的艺术家刘汉清&#xff0c;其作品展现出他对日常生活的深入洞察力&#xff0c;以及对美的独特理解。他的作品通常没有视觉参考&#xff0c;而是通过对他周围环境的理解&#xff0c;尤其是他的宠物&#xff0c;来进行创作。 在刘汉清的创作过程中&#xff0c;他…

docker容器监控:Cadvisor +Prometheus+Grafana的安装部署

目录 Cadvisor PrometheusGrafana的安装部署 一、安装docker&#xff1a; 1、安装docker-ce 2、阿里云镜像加速器 3、下载组件镜像 4、创建自定义网络 二、部署Cadvisor 1、被监控主机上部署Cadvisor容器 2、访问cAdvisor页面 三、安装prometheus 1、部署Prometheus…

【Linux 网络】 数据链路层协议

数据链路层协议 数据链路层解决的问题以太网协议认识以太网以太网帧格式 认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响ARP协议ARP协议的作用ARP协议的工作流程ARP数据报的格式 总结 数据链路层解决的问题 IP拥有将数据跨…

hcip——期中小试

要求&#xff1a; 1、该拓扑为公司网络&#xff0c;其中包括公司总部、公司分部以及公司骨干网&#xff0c;不包含运营商公网部分。 2 、设备名称均使用拓扑上名称改名&#xff0c;并且区分大小写。 3 、整张拓扑均使用私网地址进行配置。 4 、整张网络中&#xff0c;运行 O…

扩增子分析流程——Lotus2: 一行命令完成所有分析

为什么介绍lotus2 因为快&#xff0c;作者比较了lotus2流程和qiime2、dada2、vsearch等&#xff0c;lotus2的速度最快、占用内存最小。 因为方便&#xff0c;只需要一行代码&#xff0c;即可完成全部分析。 lotus2 -i Example/ -m Example/miSeqMap.sm.txt -o myTestRun而且分…

数学建模学习(10):遗传算法

遗传算法简介 • 遗传算法&#xff08;Genetic Algorithms&#xff09;是基于生物进化理论的原理发展起来的一种广为 应用的、高效的随机搜索与优化的方法。其主要特点是群体搜索策略和群体中个体之 间的信息交换&#xff0c;搜索不依赖于梯度信息。它是20世纪70年代初期由美国…

【MMU】认识 MMU 及内存映射的流程

MMU&#xff08;Memory Manager Unit&#xff09;&#xff0c;是内存管理单元&#xff0c;负责将虚拟地址转换成物理地址。除此之外&#xff0c;MMU 实现了内存保护&#xff0c;进程无法直接访问物理内存&#xff0c;防止内存数据被随意篡改。 目录 一、内存管理体系结构 1、…