当前位置: 首页 > news >正文

【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不适合写复杂的配置⽂件 ,对格式有较强的要求(⼀个空格可能会引起⼀场⾎案)

相关文章:

  • 链表的常见操作
  • 【设计模式之美】重构(三)之解耦方法论:如何通过封装、抽象、模块化、中间层等解耦代码?
  • 如何使用阿里云CDN服务?
  • Pandas实战100例 | 案例 100: 将 DataFrame 保存为 CSV 文件
  • 以后要做GIS开发的话是学GIS专业还是学计算机专业好一些?
  • mysql主从报错:Last_IO_Error: Error connecting to source解决方法
  • 京东ES支持ZSTD压缩算法上线了:高性能,低成本 | 京东云技术团队
  • 限制API接口访问速率
  • 大语言模型系列-BERT
  • DNS - 全家桶(114 DNS、阿里DNS、百度DNS 、360 DNS、Google DNS)
  • 图像处理:孤立点的检测
  • rust获取本地ip地址的方法
  • 基于小波多普勒变换的回波信号检测matlab仿真
  • 技术进化与经济互动的深刻洞察——《技术的本质》读书笔记
  • 2000W双向逆变器介绍
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • CSS 提示工具(Tooltip)
  • Effective Java 笔记(一)
  • JAVA多线程机制解析-volatilesynchronized
  • js 实现textarea输入字数提示
  • Js基础——数据类型之Null和Undefined
  • Python_网络编程
  • STAR法则
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Vue2.x学习三:事件处理生命周期钩子
  • 通过npm或yarn自动生成vue组件
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 阿里云移动端播放器高级功能介绍
  • ​Spring Boot 分片上传文件
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Panda3d 碰撞检测系统介绍
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (a /b)*c的值
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)windows配置JDK环境
  • (分布式缓存)Redis哨兵
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (一)UDP基本编程步骤
  • (原創) 物件導向與老子思想 (OO)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .bat文件调用java类的main方法
  • .CSS-hover 的解释
  • .gitignore文件设置了忽略但不生效
  • .net core 6 redis操作类
  • .Net MVC + EF搭建学生管理系统
  • .Net MVC4 上传大文件,并保存表单
  • .net MySql
  • .NET/C# 的字符串暂存池
  • .net6 webapi log4net完整配置使用流程
  • .NET成年了,然后呢?
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d