【springboot】配置文件入门

配置文件入门

配置文件最重要的目的:解决硬编码问题(代码写死)

我们接下来主要介绍两个方面:常见的配置项和配置文件的使用

SpringBoot 的配置文件,有三种格式

  1. properties
  2. yaml
  3. yml(yaml的简写)

用的较多的是yml和properties文件

如果项目中,同时存在properties和yml配置文件,properties的优先级更高。企业开发中,通常只使用其中一个文件,但是如果同时存在时,两个文件都生效。如果两个文件中,都包含同一个配置,以properties为主。

properties配置文件说明

使用properties配置文件改变端口号:

server.port=9090

properties语法格式:

key value的形式,以 = 分割
key 的格式建议是小写,单词之间使用.分割

举例:配置数据库连接信息

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

除此之外我们还可以自定义配置

demo.key = hello,properties

读取配置文件:

@RestController
public class PropertiesController {
    //读取配置文件
    //如果去掉$,就会把""中的值赋值给当前变量
    @Value("${demo.key}")
    private String key;
    @RequestMapping("/readKey")
    public String readKey(){
        return "读取到的配置:" + key;
    }
}

yml配置文件说明

把properties配置文件中的.换成冒号+换行,key后面用冒号赋值

使用yml配置文件改变端口号:

server:
  port: 9090

(Value前面)冒号后面一定要加空格,空格不可以省略。

自定义配置:

demo:
  key1: hello,yml
  key2: 12
  key3: ""

读取配置:yml文件能够自动转化类型。

@RestController
public class YmlController {
    @Value("${demo.key1}")
    private String key1;
    @Value("${demo.key2}")
    private Integer key2;
    @Value("${demo.key3}")
    private String key3;
    @PostConstruct
    public void init(){
        System.out.println("key1:" + key1);
        System.out.println("key2:" + key2);
        System.out.println("key3:" + key3);
    }
}

yml特殊内容配置
null:使用~
空字符串:key后面直接空着就行了,推荐用单引号或者双引号括起来

配置文件单双引号的区别

自定义配置文件:

string:
  str1: Hello \n Spring Boot.
  str2: 'Hello \n Spring Boot.'
  str3: "Hello \n Spring Boot."

执行结果:

image-20240118165107315

单引号会对特殊字符进行转义,双引号不会进行转义。
\n本身表示的是换行。使用单引号时,内容表示成了\n,而不是换行,所以认为是转义。使用双引号时,\n表示成了换行,也就是\n的本来含义。

yml配置对象

自定义配置文件:

student:
  id: 18
  name: zhangsan
  age: 12

定义一个java对象:

@Data
@Component//存储到spring中
@ConfigurationProperties(prefix = "student")//读取配置文件
public class Student {
    private Integer id;
    private String name;
    private Integer age;
}

通过属性注入对象,进行使用:

@Autowired
Student student;

yml配置集合

自定义配置:

dbtypes:
  name: #配置集合
    - mysql
    - sqlserver
    - db2
  map: #配置Map
    k1: kk1
    k2: kk2
    k3: kk3

定义一个对象:

@Component
@Data
@ConfigurationProperties(prefix = "dbtypes")
public class DBType {
    private String[] name;//可以用List来接收
    private Map<String,String> map;
}

获取对象并打印对象:

@RestController
public class YmlController {
    @Autowired
    DBType dbType;
    @PostConstruct
    public void init(){
        System.out.println(dbType + ",length:" + dbType.getName().length);
    }
}

如果定义集合-后面不加空格,这部分内容会变成一个整体,统一赋值给对应属性。

两种格式的配置文件对比:

  • properties读取中文乱码,yml不会产生乱码

  • yml对中文的兼容性比较好。优先读取 properties。properties出的比较早。

  • ⽀持更多的编程语⾔,不⽌是Java中可以使⽤,在Golang,Python,Ruby,JavaScript中也可以使⽤

  • yml⽀持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态

  • yml不适合写复杂的配置⽂件 ,对格式有较强的要求(⼀个空格可能会引起⼀场⾎案)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pytest + allure(windows)安装

背景 软硬件环境&#xff1a; windows11&#xff0c;已安装anaconda&#xff0c;python&#xff0c;pycharm用途&#xff1a;使用pytest allure 生成报告allure 依赖java&#xff0c;点击查看java安装教程 allure 下载与安装 从 allure下载网址下载最新版本.zip文件 放在自…

[SS]语义分割_转置卷积

转置卷积&#xff08;Transposed Convolution&#xff09; 抽丝剥茧&#xff0c;带你理解转置卷积&#xff08;反卷积&#xff09; 目录 一、概念 1、定义 2、运算步骤 二、常见参数 一、概念 1、定义 转置卷积&#xff08;Transposed Convolution&#xff09;&#xf…

Flink编程——风险欺诈检测

Flink 风险欺诈检测 文章目录 Flink 风险欺诈检测背景准备条件FraudDetectionJob.javaFraudDetector.java 代码分析执行环境创建数据源对事件分区 & 欺诈检测输出结果运行作业欺诈检测器 欺诈检测器 v1&#xff1a;状态欺诈检测器 v2&#xff1a;状态 时间完整的程序期望的…

MFC 序列化机制

目录 文件操作相关类 序列化机制相关类 序列化机制使用 序列化机制执行过程 序列化类对象 文件操作相关类 CFile&#xff1a;文件操作类&#xff0c;封装了关于文件读写等操作&#xff0c;常见的方法&#xff1a; CFile::Open&#xff1a;打开或者创建文件CFile::Write/…

mybatisPlus注解将List集合插入到数据库

1.maven引入依赖&#xff08;特别注意版本&#xff0c;3.1以下不支持&#xff09; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3.1</version></dependency&g…

Android Studio读写低频RFID T5557卡源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?id675212889085&spma1z10.5-c.w4002-21818769070.13.21166f89nKgnJ7 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xml…

SD-WAN组网设计原则:灵活、安全、高效

在实现按需、灵活和安全的SD-WAN组网方案中&#xff0c;我们必须遵循一系列关键的设计原则&#xff0c;以确保网络的可靠性和效率。通过以下几点设计原则&#xff0c;SD-WAN能够满足企业对灵活性、安全性和高效性的迫切需求。 灵活的Overlay网络互联 SD-WAN通过IP地址在站点之间…

linux基础学习(2):磁盘管理、分区、格式化

1.一些基本概念 一块磁盘从加入到可使用&#xff0c;需要经过3个阶段&#xff1a;分区-格式化-挂载。 1.1分区方式 linux有2种分区方式&#xff1a; &#xff08;1&#xff09;mbr&#xff1a;最大支持2.1T硬盘&#xff0c;最多支持4个分区。这4个分区可以全部为主分区&…

(设置非自定义Bean)学习Spring的第六天

一 . 获取Bean的方法详解 , 如下图 : 二 . Spring配置非自定义bean----DruidDatasource 我们举个例子 : 配置Druid数据源交由Spring管理 首先导入在pom文件Druid坐标 然后考虑 : 被配置的Bean的实例化方式是什么 : 无参构造 被配置的Bena是否要注入必要属性 : 四个基本信息…

防火墙技术

防火墙&#xff08;英语&#xff1a;Firewall&#xff09;技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备&#xff0c;帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障&#xff0c;以保护用户资料与信息安全性的一种技术。 防火墙技术的功能主要在于及…

查找局域网树莓派raspberry的mac地址和ip

依赖python库&#xff1a; pip install socket pip install scapy运行代码&#xff1a; import socket from scapy.layers.l2 import ARP, Ether, srpdef get_hostname(ip_address):try:return socket.gethostbyaddr(ip_address)[0]except socket.herror:# 未能解析主机名ret…

ARP相关

ARP报文格式&#xff1a; 目的以太网地址&#xff0c;48bit&#xff0c;发送ARP请求时&#xff0c;目的以太网地址为广播MAC地址&#xff0c;即0xFF.FF.FF.FF.FF.FF。 源以太网地址&#xff0c;48bit。 帧类型&#xff0c;对于ARP请求或者应答&#xff0c;该字段的值都为0x08…

iOS原生应用屏幕适配完整流程

1. 已iPhone 11 布局为设计布局,其他机型已这个来适配 2.变量与控件对应关系 txtViewer: txtAccount txtpwd seg btnOk 3.适配方法实现: //iOS屏幕适配 -(vo

设计PCB阻抗

https://zhuanlan.zhihu.com/p/589924395 1. 原理图设计 电路板的设计始于设计工程师设计电路原理图。 1.1, 工程师必须在原理图中指定受控阻抗信号&#xff0c;并将特定网络分类为差分对&#xff08;1002、902或852&#xff09;或单端网络&#xff08;402、502、552、602或75…

期末python实验一,二作业-对象编程【仅供参考】

目录 实验一西游游戏-对象 1&#xff0c;选择角色后&#xff0c;角色不能改 2&#xff0c;选择角色后&#xff0c;角色可以改 实验二猜拳游戏-对象 实验一西游游戏-对象 老师给的题目材料&#xff1a; 第一步&#xff1a;系统登录 失败时允许重复输入三次&#xff01; 第二…

设计 Mint.com

1. 梳理 User Case 和 约束 Use cases 作用域内的Use Case User 连接到 financial accountService 从 Account 中提取 transactions 日常 Update整理 transaction 所有的手动目录由 User 覆盖没有自动化的重排机制 - 通过目录分析月消费 Service 推荐 budget 允许 user 去…

小封装高稳定性振荡器 Sg2520egn / sg2520vgn, sg2520ehn / sg2520vhn

描述 随着物联网和ADAS等5G应用的实施&#xff0c;数据流量不断增长&#xff0c;网络基础设施变得比以往任何时候都更加重要。IT供应商一直在快速建设数据中心&#xff0c;并且对安装在数据中心内部/内部的光模块有很大的需求。此应用需要具有“小”&#xff0c;“低抖动”和“…

Redis分布式锁存在的问题以及解决方式

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…

【前沿技术杂谈:智能对话的未来】深入比较ChatGPT与文心一言

【前沿技术杂谈&#xff1a;智能对话的未来】深入比较ChatGPT与文心一言 引言主体智能回复语言准确性知识库丰富度 深入分析&#xff1a;ChatGPT与文心一言的技术对比技术架构和算法数据处理和隐私用户界面和体验 应用场景分析未来展望技术进步的趋势潜在的挑战对社会的影响 结…

2018年认证杯SPSSPRO杯数学建模C题(第二阶段)机械零件加工过程中的位置识别全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 基于轮廓提取与图像配准的零件定位问题研究 C题 机械零件加工过程中的位置识别 原题再现&#xff1a; 在工业制造自动生产线中&#xff0c;在装夹、包装等工序中需要根据图像处理利用计算机自动智能识别零件位置&#xff0c;并由机械手将零件…