SpringBoot 配置文件

SpringBoot 配置文件
配置⽂件作用
配置文件是为了解决硬编码的问题,把一些可能会发生改变的信息放到一个集中的地方当我们启动某个程序时应用程序就从我们配置的文件中读取数据并进行加载运行

硬编码是将数据直接嵌⼊到程序或其他可执⾏对象的源代码中, 也就是我们常说的"代码写死"
例如字体的大小
如果采⽤硬编码的⽅式,就直接在程序中指定字体⼤⼩,所有的⽤⼾使⽤的都是同⼀个字体⼤⼩
但我们现实中会根据用户的喜好来进行字体的大小显示

在SpringBoot中⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成SpringBoot的⽬的
例如
项⽬的启动端⼝

SpringBoot内置了Tomcat服务器,默认端⼝号是8080, 但是⽤⼾电脑上8080端⼝号有可能就被其他 应⽤程序占⽤了,所以SpringBoot需要⽀持让⽤⼾⾃定义端⼝号

数据库的连接信息

包含⽤⼾名和密码的设置

第三⽅系统的调⽤密钥等信息

⽤于发现和定位问题的普通⽇志和异常⽇志等

配置文件

修改端口号 我们默认的端口号时8080 可以修改
application.properties 文件
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
让我们的端口号就被改成了9090

配置⽂件的格式

Spring Boot 配置⽂件有以下三种

application.properties
application.yml
application.yaml
其中yml是yaml的缩写 和yaml的使用方法一样
当应用启动时SpringBoot会⾃动从classpath路径找到并加载这三种文件

注意:
.properties文件和.yml文件可以在一个项目之中存在当两个同时存在时会以.properties为主(.properties)的优先级更高 但是我们通常会取用一种配置文件格式

.properties配置文件说明
.properties的键值的形式配置的key和value之间是以"=“之间连接的 可以使用”#"来添加注释信息
例如:

# 应用服务 WEB 访问端口
server.port=8080
#配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

读取配置文件
如果要在项目读取配置文件的内容可以使用@value注解实现注解使用"${}"格式读取
properties 配置如下:
在这里插入图片描述

package com.demos.Controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PropertiesController {@Value("${mykey.key1}")private String key1;@RequestMapping("/key")public String key(){return "读取到值:" + key1;}}

在这里插入图片描述
properties的缺点
从上述配置看到properties很啰嗦
在这里插入图片描述
我们可以使用yml配置文件格式化

yml配置⽂件

基本语法
yml是树形结构的配置⽂件 语法是key:value
key和value之间使用英文冒号加空格方式组成(空格不能省略)
例如
在这里插入图片描述
使用yml连接数据库
使用示例:

key1: hello
spring: datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=falseusername: rootpassword: root

它和和properties连接数据库就显得简洁了许多

yml配置不同数据类型及nul

#字符串
spring.value: Hello
#整数
int.value: 10
#浮点数
float.value: 3.14
#Null ~代表null
null.value: ~
#""空字符 也可以后面什么都不加
empty.value: ""

yml配置读取
yml读取配置的⽅式和properties相同,使用@Value 注解即可,实现代码如下
yml配置:
在这里插入图片描述
在这里插入图片描述
注意: value值加单双引号
字符串默认不⽤加上单引号或者双引号
如果加英⽂的单双引号可以表⽰特殊的含义
例如:

在这里插入图片描述

@RestController
public class ReadYml {@Value("${string.hello}")private String hello;@Value("${string.str1}")private String str1;@Value("${string.str2}")private String str2;@Value("${string.str3}")private String str3;@RequestMapping("/ymlKey")public String key(){System.out.println(str1);System.out.println(str2);System.out.println(str3);return "yml";}
}

结果:
在这里插入图片描述
可以看到

字符默认不用加上单引号或者双引号
单引号会转义特殊字符,使其失去特殊功能,始终是⼀个普通的字符串
双引号不会转义字符串⾥⾯的特殊字符,特殊字符会表⽰本⾝的含义

单引号会转义\n不再表⽰换⾏了,⽽是表⽰⼀个普通的字符串

双引号不会转义,表⽰\n表⽰的是它本⾝的含义,就是换⾏

配置对象
还可以在yml中配置对象
例如

student:id: 1name: 张三age: 18

也可以使用这种写法

student2: {id: 2,name: 李四,age: 18}

这时我们需要另外一个注解@ConfigurationProperties来读取
例如:

 @ConfigurationProperties(prefix = "student")
@Component
@Data
public class Student {private int id;private String name;private int age;
}

调⽤类的实现

@RestController
public class StudentController {@Autowiredprivate Student student;@RequestMapping("/readStudent")public String readStudent(){return student.toString();}
}

在这里插入图片描述

配置集合
配置⽂件也可以配置list集合
例如:

dbtypes:name:- mysql- sqlserver- db2

集合的读取和对象⼀样
例如

maptypes:map:k1: key1k2: key2k3: key3

或者

maptypes2: {map: {k1: key1, k2: key2, k3: key3}}

读取

@ConfigurationProperties("maptypes")
@Component
@Data
public class MapConfig {private HashMap<String,String> map;
}
@RestController
public class ReadYml3 {@Autowiredprivate MapConfig mapConfig;@RequestMapping("/readMap")public String readMap(){return mapConfig.toString();}
}

结果
在这里插入图片描述

yml的优缺点

优点可读性高易于理解
⽀持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态.
⽀持更多的编程语⾔,不⽌是Java中可以使⽤,在 Golang,Python,Ruby,JavaScript中也可以使⽤

缺点
不适合写复杂的配置文件
如properties格式

 keycloak.security[0].authRoles[0]= userkeycloak.security[0].collections[0].name = ssologinurlkeycloak.security[0].collections[0].patterns[0] = /login/*

变成yml

keycloak:security[0]:- authRoles[0]: - usercollections[0]:- name: ssologinurlpatterns[0]: /login/*

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

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

相关文章

docker 命令 ps,inspect,top,logs详解

docker常用命令教程-4 docker ps docker ps 命令用于列出当前正在运行的容器。默认情况下&#xff0c;它只显示正在运行的容器&#xff0c;但你可以使用 -a 或 --all 选项来显示所有容器&#xff08;包括已停止的容器&#xff09;。 常用的选项和示例&#xff1a; -a 或 --…

Spring Boot中整合Jasypt 使用自定义注解+AOP实现敏感字段的加解密

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

小程序 UI 风格美不胜收

小程序 UI 风格美不胜收 小程序 UI 风格美不胜收

python基础——-多任务-正则-装饰器

一、多任务 1-进程和线程 进程是操作系统分配资源的最小单元 线程执行程序的的最小单元 线程依赖进程&#xff0c;可以获取进程的资源 一个程序执行 先要创建进程分配资源&#xff0c;然后使用线程执行任务 默认情况下一个进程中有一个线程 2-多任务介绍 运行多个进程或线程执…

软件杯 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基…

discuz点微同城源码34.7+全套插件+小程序前端

discuz点微同城源码34.7全套插件小程序前后端 模板挺好看的 带全套插件 自己耐心点配置一下插件 可以H5可以小程序

MySQL与PostgreSQL关键对比一(整体篇)

目录 1 快速参考表&#xff1a;MySQL 与 PostgreSQL 功能表 2 快速参考表&#xff1a;MySQL 与 PostgreSQL 功能表 MySQL 和 PostgreSQL 提供许多相同的特性和功能 - 但是这两个关系数据库管理系统 (RDBMS) 之间存在不容忽视的关键差异。 如果您不熟悉这些差异&#xff0c;这…

SCARA机器人中旋转花键的维护和保养方法!

作为精密传动元件的一种&#xff0c;旋转花键在工作过程中承受了较大的负荷。在自动化设备上运用广泛&#xff0c;如&#xff1a;水平多关节机械手臂&#xff08;SCARA&#xff09;、产业用机器人、自动装载机、雷射加工机、搬运装置、机械加工中心的ATC装置等&#xff0c;最适…

苗情灾害监测站

TH-MQ1随着现代农业技术的不断进步&#xff0c;苗情灾害监测站在农田管理中扮演着越来越重要的角色。这种先进的监测技术为农民提供了实时的苗情信息和灾害预警&#xff0c;帮助他们更有效地进行农田管理和决策。 一、苗情灾害监测站的基本概述 苗情灾害监测站是一种集传感器…

CAD 文件(DXF / DWG)转换为(DXF / PDF / PNG / SVG)

方法一Github 这个是ezdxf出品的&#xff0c;可以使用命令行的方式进行转换 ezdxf draw -o file.<png|svg|pdf> <file.dxf>也可以自己改动代码 examples/addons/drawing/pdf_export.py 但是直接运行会有误&#xff0c;以下是我改动后的代码&#xff1a; from ez…

U-Mail:企业邮箱系统安全解决方案

在数字化浪潮的推动下&#xff0c;互联网技术正日新月异&#xff0c;企业的信息通信需求亦随之升华。作为企业沟通的重要媒介&#xff0c;企业邮箱已被广泛应用&#xff0c;然而随着其应用范围的不断扩展&#xff0c;也给企业带来了一系列挑战&#xff1a; 一、统一身份认证管…

小程序集arcgis地图显示自定义坐标的功能实现记录!(学习笔记)

最近再做一个新能源回收项目&#xff0c;项目中有个根据回收点坐标数据显示区域内回收点位置&#xff0c;点击图标直接导航到该位置&#xff0c;及分布的需求&#xff0c;研究了一下&#xff0c;实现效果如下&#xff0c;实现起来很简单&#xff0c;代码及效果 回收点位置及分…

Unity DOTS技术(九) BufferElement动态缓冲区组件

文章目录 一.简介二.例子 一.简介 在之前的学习中我们发现Entity不能挂载相同的组件的. 当我们需要用相同的组件时则可以使用.IBufferElementData接口 动态缓冲区组件来实现 二.例子 1.创建IBufferElementData组件 using Unity.Entities; using UnityEngine; //[GenerateAu…

【MachineLearning】| 机器学习:推动未来技术革新与应用的新引擎

一、引言 随着计算能力的飞速提升和大数据的广泛应用&#xff0c;机器学习已成为推动现代科技发展的关键力量。从自动化驾驶到精准医疗&#xff0c;再到金融风险评估&#xff0c;机器学习正逐步改变着我们的工作和生活方式。本文将围绕机器学习的技术革新及其在不同领域的应用…

华为机考入门python3--(33)牛客33-图片整理

分类&#xff1a;排序 知识点&#xff1a; 对字符串中的字符ASCII码排序 sorted(my_str) 题目来自【牛客】 def sort_images(s):# 可以使用ord(A)求A的ASCII值&#xff0c;需要注意的是A的值&#xff08;65&#xff09;比a的值小&#xff08;97&#xff09;sorted_images …

构建Vue3项目的几种方式,如何简化setup写法

1、说明 在vue2版本中&#xff0c;我们使用vue-cli脚手架进行构建&#xff0c;而切换到Vue3之后&#xff0c;依然可以使用vue-cli脚手架进行构建&#xff0c;但是官方推荐使用vite工具进行构建&#xff0c;下面将介绍几种方式构建vue3项目。 2、使用vue-cli脚手架构建Vue3项目…

深入剖析Tomcat(九) Session的实现原理

提到Session&#xff0c;相信大家都不陌生&#xff0c;Http协议本身是无状态的&#xff0c;每次请求都是独立的&#xff0c;而当我们想要将多次请求建立某种关系的时候&#xff0c;就会用到CookieSession这个组合&#xff0c;也就是常说的“会话”概念&#xff0c;将多次请求当…

MFC工控项目实例之二添加iPlotx控件

承接专栏《MFC工控项目实例之一主菜单制作》 在WIN10下使用Visual C 6.0 &#xff08;完整绿色版&#xff09;添加iPlotx控件的方法。 1、在资源主对话框界面点击鼠标右键如图选择插入Active控件点击进入。 2、选择iPlotx Contrlolh点击确定。 3、在对话框界面插入iPlotx控件。…

YOLO系列模型 pt文件转化为ONNX导出

文章目录 啥是onnx怎么导出导出之后 啥是onnx Microsoft 和合作伙伴社区创建了 ONNX 作为表示机器学习模型的开放标准。许多框架&#xff08;包括 TensorFlow、PyTorch、scikit-learn、Keras、Chainer、MXNet 和 MATLAB&#xff09;的模型都可以导出或转换为标准 ONNX 格式。 在…

Liunx音频

一. echo -e "\a" echo 通过向控制台喇叭设备发送字符来发声&#xff1a; echo -e "\a"&#xff08;这里的 -e 选项允许解释反斜杠转义的字符&#xff0c;而 \a 是一个响铃(bell)字符&#xff09; 二. beep 下载对应的包 yum -y install beep 发声命令 be…