【SpringBoot】SpringBoot配置文件

1.配置文件的作用

整个项目中所有重要的数据都是在配置文件中配置的。比如:

  • 数据库的连接信息(包含⽤户名和密码的设置);
  • 项⽬的启动端口;
  • 第三⽅系统的调⽤秘钥等信息;
  • ⽤于发现和定位问题的普通⽇志和异常⽇志等。

2.配置文件的格式

Spring Boot 配置⽂件主要分为以下两种格式:

  • .properties
  • .yml

如下图所示:
配置文件
properties 类型的配置文件是SpringBoot项目默认的文件格式。

特殊说明:
properties 可以和 yml ⼀起存在于⼀个项⽬中,.properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。但在实际应用中,推荐只使用一种。


3. properties配置文件说明

基本语法

properties 是以键值的形式配置的,key 和 value 之间是以"="连接的。
例如:
配置项目端口号:

# 配置项⽬端⼝号
server.port=8081

数据库连接:

#配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/cate_db?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=111111

自定义配置:

#自定义配置
mykey.key1=hi

配置文件中使用"#"注释

读取配置文件

在项目中,想要主动读取配置文件,可以使用注解@Value来实现。

格式:@Value(“${}”)

举例:读取自定义的配置:
配置中key1的值为hi,在类中定义一个key1,用@Value获取,在postConstruct方法打印。

@RestController
public class ValueController {
    @Value("${mykey.key1}")
    private String key1;

    @PostConstruct
    public void postConstruct(){
        System.out.println("===============================");
        System.out.println("key:"+key1);
    }

    public String hi(){
        return "hi";
    }
}

可以看到,结果如下:
在这里插入图片描述输出了hi。


4. yml配置文件说明

yml是树形结构的配置文件。

基础语法:key: value
注意: key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略

yml连接数据库

使用properties 连接数据库时,总是有一大串重复的字符。如图所示。
在这里插入图片描述而使用yml连接数据库,则省略了很多:

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

注意:一定要在冒号和value之间加空格!!!格式很重要!!!

yml配置不同数据类型及null

#boolean类型
mykey:
  key1: true

#整数
int:
  key2: 10

#NULL,~代表null
boo:
  key3: null
  key4: ~

注意事项:关于配置文件中加引号的情况:

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

无引号ps单引号ps双引号的对比,来看看输出结果:
在这里插入图片描述双引号会解析内容,比如上面的例子,把\n解析成了换行。

yml配置读取

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

    @Value("${spring.datasource.username}")
    private String sqlusername;

    @PostConstruct
    public void postConstruct(){
        System.out.println("===============================");
        System.out.println("key:"+key1);
        System.out.println("sqlusername"+sqlusername);
    }

结果如下图所示:
在这里插入图片描述使用yml配置对象

定义一个学生对象:

student:
  id: 1
  name: 温温
  age: 18

创建一个对应的学生类:

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

补充:
注解1:使用@Data注解可以帮助我们直接写get, set, toString等方法,就不用手动写了,但是使用此注解需要引入lombok依赖

注解2:@Component,将这个对象交给Spring管理。
注解3:@ConfigurationProperties,进行赋值
,如果去掉这个注解,则student类的属性值都为空。

进行配置读取:

    @Autowired
    private Student student;

    @PostConstruct
    public void postConstruct(){
        System.out.println("===============================");
        System.out.println(student);
        System.out.println("===============================");
    }

结果如下:
在这里插入图片描述使用yml配置集合

在上面代码的基础上配置一个集合dbtypes,使用"-"。配置文件如下:

student:
  id: 1
  name: 温温
  age: 18
  dbtypes:
    - mysql
    - java
    - web

student类如下:

@Data
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private List<String> dbtypes;
}

输出结果如下:
在这里插入图片描述直接在配置文件和类中添加属性即可。
使用yml配置map
配置文件如下:

student:
  id: 1
  name: 温温
  age: 18
  dbtypes:
    - mysql
    - java
    - web
  map:
    k1: kk1
    k2: kk2
    k3: kk3

student类如下:

@Data
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private List<String> dbtypes;
    private Map<String,String> map;
}

结果如下:
在这里插入图片描述

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

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

相关文章

使用端点中心进行补丁管理

什么是补丁管理 补丁管理是为网络中的所有操作系统和应用程序检测、下载、测试、批准和安装新补丁/缺失补丁的过程。它需要集中查看网络中端点的适用补丁&#xff0c;以便可以一目了然地对易受攻击、高度易受攻击和健康的系统进行分类。这有助于发现需要注意的系统&#xff0c…

WPF嵌入外部exe应用程序-实现基本的嵌入

WPF嵌入外部exe应用程序 使用场景功能实现嵌入基本功能实现1.导入windows API2.运行外部程序3. 获取窗体句柄4. 嵌入窗体5.设置子窗体位置整个代码 嵌入存在的问题&#xff1a; 使用场景 在WPF桌面应用程序开发过程中&#xff0c;有时候需要将其他程序结合到一起&#xff0c;让…

详细解析张雪峰老师对计算机专业的评价“进可攻,退可守”--【职场篇】

文章目录 张雪峰的评价计算机行业类的总结性指示就业面宽进可攻&#xff0c;退可守另一个就业出口--培训 持续学习&#xff0c;技术过人 总结 张雪峰的评价 计算机行业类的总结性指示 “就业面宽&#xff0c;进可攻&#xff0c;退可守&#xff0c;各行各业其实对计算机专业都有…

【uni-app】自定义导航栏

【uni-app】自定义导航栏 新手刚玩uniapp进行微信小程序&#xff0c;甚至多端的开发。原生uniapp的导航栏&#xff0c;并不能满足ui的需求&#xff0c;所以各种查阅资料&#xff0c;导航栏自定义内容 整理如下&#xff1a; 需要修改的文件如下&#xff1a; 1、pages.json 修…

[nlp] GPT

一、联合训练任务 1.1 NTP(Next Token Prediction) gpt预训练的一个目标函数有两个,第一个是基础的下一个词预测任务,选择一个K窗口,将窗口中的K个词的embedding作为条件去预测下一个词。 1.2 TC(Text Classification) 第二个是一个分类任务,一段话给一个标签,然后去预…

MyBatis 的架构

MyBatis 的架构 MyBatis 是一个基于 Java 的持久层框架&#xff0c;可以将 SQL 语句和 Java 代码进行分离&#xff0c;通过 XML 或注解的方式配置 SQL 语句并执行&#xff0c;从而实现数据访问的功能。MyBatis 的架构包括以下几个部分&#xff1a; SqlSessionFactory&#xff…

企业拥抱开源的同时,该如何做好风险防范?- 对话新思科技杨国梁

“软件供应链安全”相关文章合集 杨国梁 新思科技软件质量与安全部门高级安全架构师 当前&#xff0c;开源组件已成为软件应用程序中不可或缺的一部分。然而&#xff0c;随着开源软件数量的快速增长&#xff0c;应用领域的不断扩大&#xff0c;随之而来的安全问题也变得愈发严峻…

数学建模-典型相关分析

上节回顾 论文&#xff1a;常州大学一等奖淡水养殖… 要进行 pearson 相关系数 画散点图、折线图看是否相关检验正态分布满足上述&#xff0c;利用pearson相关系数 刚开始推导不会没关系&#xff0c;会应用就行&#xff0c;推导过程略&#xff0c;之后学习了后续知识&#xff…

微服务之服务器缓存

Informal Essay By English In the difficult employment situation, we need to set a good goal and then do our own thing 参考书籍&#xff1a;“凤凰架构” 进程缓存&#xff08;Cache&#xff09; 缓存在分布式系统是可选&#xff0c;在使用缓存之前需要确认你的系统…

基于时域特征和频域特征组合的敏感特征集,再利用SVM或KNN传统分类器进行轴承故障诊断(python编程,代码有详细注释)

1.文件夹介绍&#xff08;使用的是CWRU数据集&#xff09; 0HP-3HP四个文件夹装载不同工况下的内圈故障、外圈故障、滚动体故障和正常轴承数据。 这里以打开0HP文件为例进行展示&#xff0c;creat_data.py是处理原始数据的脚本&#xff0c;负责将原始数据切不重叠割成1024的固…

CSS 实现 Turbo 官网 3D 网格线背景动画

转载请注明出处&#xff0c;点击此处 查看更多精彩内容 查看 Turbo 官网 时发现它的背景动画挺有意思&#xff0c;就自己动手实现了一下。下面对关键点进行解释说明&#xff0c;查看完整代码及预览效果请 点击这里。 简单说明原理&#xff1a;使用 mask-image 遮罩绘制网格&a…

东莞-戴尔R540服务器故障告警处理方法

DELL PowerEdge R540服务器故障维修案例&#xff1a;&#xff08;看到文章就是缘分&#xff09; 客户名称&#xff1a;东莞市某街道管理中心 故障机型&#xff1a;DELL R540服务器 故障问题&#xff1a;DELL R540服务器无法开机&#xff0c;前面板亮黄灯&#xff0c;工程师通过…

五笔衰落,PC和OCR惹得祸?

许多人认为五笔输入法的衰落主要因素是败给了拼音输入法&#xff0c;是被拼音输入法给“打残”了&#xff0c;取代了&#xff0c;其实这只是表面原因&#xff0c;笔者认为&#xff0c;其关键因素是PC的衰落和OCR技术的不断改进和发展&#xff0c;理由如下&#xff1a; 1、PC出…

【SQL应知应会】表分区(三)• MySQL版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 分区表 • MySQL版 前言一、分区表1.非分区表2.分区…

欧姆龙以太网模块如何设置ip连接 Kepware opc步骤

在数字化和自动化的今天&#xff0c;PLC在工业控制领域的作用日益重要。然而&#xff0c;PLC通讯口的有限资源成为了困扰工程师们的问题。为了解决这一问题&#xff0c;捷米特推出了JM-ETH-CP转以太网模块&#xff0c;让即插即用的以太网通讯成为可能&#xff0c;不仅有效利用了…

Pytorch如何打印与Keras的model.summary()类似的输出

1 Keras的model.summary() 2 Pytorch实现 2.1 安装torchsummary包 pip install torchsummary2.2 代码 import torch import torch.nn as nn import torch.nn.functional as F from torchsummary import summaryclass Net(nn.Module):def __init__(self):super(Net, self).__…

linux之Ubuntu系列(四)用户管理 用户和权限 chmod 超级用户root, R、W、X、T、S 软链接和硬链接

r(Read&#xff0c;读取)&#xff1a;对文件而言&#xff0c;具有读取文件内容的权限&#xff1b;对目录来说&#xff0c;具有浏览目 录的权限。 w(Write,写入)&#xff1a;对文件而言&#xff0c;具有新增、修改文件内容的权限&#xff1b;对目录来说&#xff0c;具有删除、移…

【Mac使用笔记】之 Homebrew

Homebrew更新&#xff1a; brew update && brew upgrade 当出现错误&#xff1a; fatal: couldnt find remote ref refs/heads/master 执行&#xff1a; brew tap --repair Ruby安装&#xff1a; 1、查看当前Homebrew版本&#xff1a; brew --version2、查看当前…

python appium UI 自动化测试框架讨论

目录 前言&#xff1a; 框架共性总结 Auto_Analysis 权限弹窗识别 前言&#xff1a; Python Appium UI自动化测试框架是一种用于测试移动应用程序的工具&#xff0c;它结合了Python编程语言和Appium测试框架的功能。 框架共性总结 1 自动找设备 连接设备 2 自动启 appium …

高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术应用

查看原文>>>高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术应用 能源是国民经济发展和人民生活必须的重要物质基础。在过去的200多年里&#xff0c;建立在煤炭、石油、天然气等化石燃料基础上的能源体系极大的推动了人类社会的发展。但是人类在使…