【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,ymlkey2: 12key3: ""

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

@RestController
public class YmlController {@Value("${demo.key1}")private String key1;@Value("${demo.key2}")private Integer key2;@Value("${demo.key3}")private String key3;@PostConstructpublic 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: 18name: zhangsanage: 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- db2map: #配置Mapk1: kk1k2: kk2k3: kk3

定义一个对象:

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

获取对象并打印对象:

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

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

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

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

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

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

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

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

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

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

相关文章

2017年认证杯SPSSPRO杯数学建模B题(第一阶段)岁月的印记全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 跨年龄人脸识别模型的建立与分析 B题 岁月的印记 原题再现&#xff1a; 对同一个人来说&#xff0c;如果没有过改变面容的疾病、面部外伤或外科手术等经历&#xff0c;年轻和年老时的面容总有很大的相似性。人们在生活中也往往能够分辨出来两…

2023 IoTDB Summit:北京城建智控科技股份有限公司高级研发主管刘喆《IoTDB在城市轨道交通综合监控系统中的应用》...

12 月 3 日&#xff0c;2023 IoTDB 用户大会在北京成功举行&#xff0c;收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题&#xff0c;多位学术泰斗、企业代表、开发者&#xff0c;深度分享了工业物联网时序数据库 IoTDB 的技术创新…

HCIP-7

IPV6: 为什么使用IPV6&#xff1a; V4地址数量不够V4使用NAT&#xff0c;破坏了端到端原则 IPV6的优点&#xff1a; 全球单播地址聚合性强&#xff08;IANA组织进行合理的分配&#xff09;多宿主----一个接口可以配置N个地址--且这些地址为同一级别自动配置---1&#xff09;…

AGI即将出现,未来最重要的资源是算力和能源

丨划重点 ① 关于新模型的名字&#xff0c;奥特曼还没有明确的想法&#xff0c;但他称不喜欢像“iPhone 27”这样的命名方式。 ② 奥特曼认为AGI将在不久的将来出现&#xff0c;但对社会和工作的影响程度可能远低于预期。 ③ 奥特曼表示&#xff0c;尽管AI的潜力超过预期&#…

CS8370错误,这是由于使用了C# 7.3中不支持的功能

目录 背景: 第一种方法: 第二种办法: 背景: 在敲代码的时候&#xff0c;程序提示报错消息提示:CS8370错误&#xff0c;那么这是什么原因导致的&#xff0c;这是由于使用了C# 7.3中不支持的功能&#xff0c;不支持该功能&#xff0c;那就是版本太低我们就需要升级更高的版本&…

自动驾驶概述

自动驾驶技术主要解决的问题 无人驾驶分级 L1:巡航定速(ACC),巡航装置可以纵向控制车辆,可以加速减速 L2:车道保持辅助,系统可以纵向控制也可以横向控制汽车,但车是辅助,人才是主导。 L2.5:可以提供简单路况下的变道能力,比如特斯拉。 L3:L2的基础上提供变道能力,…

Apache安全及优化

配置第一台虚拟机 VM1网卡 yum仓库 挂载磁盘 上传3个软件包到/目录 到/目录下进行解压缩 tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz tar -xjf httpd-2.4.29.tar.bz2 mv apr-1.6.2 httpd-2.4.29/srclib/apr mv apr-util-1.6…

电阻表示方法和电路应用

电阻 电阻的表示方法 直标法 直标法是将电阻器的类别及主要技术参数的数值直接标注在电阻器表面上 通常用3位阿拉伯数字来标注片状电阻的阻值&#xff0c;其中第1位数代表阻值的第1位有效数&#xff1b;第2位数代表阻值的第二位有效数字&#xff1b;第3位数代表阻值倍率&…

Stability AI发布全新代码模型Stable Code 3B

Stable Code 3B: Coding on the Edge 要点&#xff1a; Stable Code 3B 是一个包含 30 亿个参数的大型语言模型 (LLM)&#xff0c;可实现准确且响应灵敏的代码补全&#xff0c;其水平与大 2.5 倍的 CodeLLaMA 7b 等模型相当。即使在 MacBook Air 等普通笔记本电脑上没有 GPU&…

蓝桥杯(C++ 整数删除 优先队列 )

优先队列&#xff1a; 优先队列具有队列的所有特性&#xff0c;包括队列的基本操作&#xff0c;只是在这基础上添加了内部的一个排序&#xff0c;它本质是一个堆实现的。 1.头文件&定义 #include <queue> #include <functional> //greater<>// 定义 p…

主动轮廓——计算机视觉中的图像分割方法

​ 一、说明 简单来说&#xff0c;计算机视觉就是为计算机提供类似人类的视觉。作为人类&#xff0c;我们很容易识别任何物体。我们可以很容易地识别山丘、树木、土地、动物等&#xff0c;但计算机没有眼睛&#xff0c;也没有大脑&#xff0c;因此它很难识别任何图像。计算机只…

什么是JavaScript BOM

BOM是Browser Object Model的缩写&#xff0c;即浏览器对象模型。由于BOM是和浏览器相关的一些操作&#xff0c;因此产生的后果就是无数的浏览器厂商各自使用自己的一套方式实现BOM&#xff08;当然现在这个问题基本解决了。。&#xff09; 在网站中有很多针对浏览器的操作&…