Spring Boot配置文件

在这里插入图片描述
hi,大家好,今天为大家带来Spring Boot 的配置文件相关的知识

文章目录

  • 🐷上期遗留问题:约定大于配置:
  • 🥫1.配置文件作用
  • 🥫2.配置文件格式
  • 🥫3.properties配置文件介绍
    • 🍧3.1properties基本语法
    • 🍧3.2 读取配置文件
    • 🍧3.3 properties优缺点
  • 🥫4.yml配置文件介绍
    • 🍧4.1 yml基本语法
    • 🍧4.2 yml优缺点
    • 🍧4.3yml使用
      • 🧊4.3.1yml配置不同数据类型
      • 🧊4.3.2配置对象
      • 🧊4.3.3 yml配置读取
      • 🧊4.3.4 配置集合
  • 🥫5.properties VS yml
  • 🥫6.查看系统配置项
  • 🥫7.设置不同环境的配置⽂件

🐷上期遗留问题:约定大于配置:

所有要存放在容器中的类必须要放到和启动类同一个目录或者启动类子目录的类,否则不能运行

🥫1.配置文件作用

项目的所有的重要的文件都是在配置文件中配置的
比如数据库的连接信息,以及日志文件等
如果没有配置文件,Spring Boot项目就不能连接和操作数据库,不能保存日志,所以配置文件非常重要

🥫2.配置文件格式

1.properties
2.yml

🥫3.properties配置文件介绍

在这里插入图片描述
properties是Spring Boot项目默认的配置文件,yml是新的款式,下面我们来分别介绍一下

1.properties 可以和 yml ⼀起存在于⼀个项⽬当中,当 properties 和 yml ⼀起存在⼀个项
⽬中时,如果配置⽂件中出现了同样的配置,那么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息
举个例子
在这里插入图片描述
在这里插入图片描述
运行结果
在这里插入图片描述
2. properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配
置⽂件格式

🍧3.1properties基本语法

properties是键值对的形式进行配置的,key和value用=连接
在这里插入图片描述
配置文件用#表示注释
这里来说一下配置文件里面的配置类型分类
1.系统配置项 给系统(框架)使用
2.用户自定义配置(开发者自己使用)
开始讲解之前我们来做一下热部署,什么是热部署?
热部署就是不用手动重启项目就能自动启动项目

我们之前在创建项目的时候已经添加了spring-dev-tool依赖,那么就做下一步.在ideasettings设置里面找到在这里插入图片描述
在这里插入图片描述
然后打开
在这里插入图片描述
进行一样的步骤.也就是为当前项目配置,也为新项目配置

🍧3.2 读取配置文件

1.使用@Value注解
在这里插入图片描述

我们来读取一下配置文件下的用户自定义配置

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-01
 * Time: 9:43
 */
@Controller
@ResponseBody
public class TestController {
    //从配置项读取配置
    @Value("${success.path}")
    //赋值给一个变量
    private String way;

    @RequestMapping("/sayhi")
    public String sayHi(){
        return "hello ,world"+way;
    }
}

注解里面记得加${},才能当做是key,
运行项目
在这里插入图片描述

🍧3.3 properties优缺点

我们来拿配置数据库举例子

# MySQL 配置项
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myblog
spring.datasource.username=root
spring.datasource.password=12345678
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

缺点:spring.datasource是不可以删掉的,写起来就比较麻烦冗余
优点:语法简单,适合初学者

🥫4.yml配置文件介绍

🍧4.1 yml基本语法

是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略
在这里插入图片描述
在这里插入图片描述
如果少了一个空格,在这里插入图片描述
在这里插入图片描述
这里可以看到,稍有不慎就会错误

🍧4.2 yml优缺点

先来看yml格式的数据库配置

spring:
datasource:
url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
username: root
password: root

优点:

1.易读性强,缩进语法使其更加易于理解;支持注释,能够让文件更易于维护;
2.可以表示不同的数据类型,如字符串、整数、浮点数、列表、字典等;
3.可以轻松地与各种编程语言集成,例如Python、Java、Ruby等;

4.与XML、JSON等格式相比,文件体积小,易于传输和处理。
缺点:
1.对数据结构的描述有时可能不够明确,可能需要更多的文档来澄清数据类型的定义;
2.某些语言可能不支持YML文件格式,需要使用第三方库或工具进行转换;
3.没有标准的YML文件格式规范,可能存在一些语法差异和不兼容。 总的来说,YML格式在某些情况下非常有用和方便,但也有一些限制和约束

🍧4.3yml使用

🧊4.3.1yml配置不同数据类型

# 字符串
string.value: Hello
# 布尔值,truefalse
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null~代表null
null.value: ~

写一个空值的例子
在这里插入图片描述

在这里插入图片描述

🧊4.3.2配置对象

yml还可以定义一个对象

#自定义对象
myobj:
  id: 85
  name: 王一博
  age: 25

🧊4.3.3 yml配置读取

来配置读取对象的某一个属性
就拿上面的举例子

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.PostConstruct;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-01
 * Time: 16:34
 */
@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {
    @Value("${myobj.name}")
    private String name1;

    @PostConstruct
    public void doPost(){
        System.out.println(name1);
    }
}

在这里插入图片描述
打印成功了!
读取该对象
新建一个类

package com.example.demo.model;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-01
 * Time: 16:46
 */
@ConfigurationProperties("myobj")
@Component
public class person {
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {


    @Autowired private person p;

    @PostConstruct
    public void doPost(){
        System.out.println(p.toString());
    }
}

在这里插入图片描述
在这里插入图片描述
看一下这两个注解
现在不使用@Value了
使⽤注解@ConfigurationProperties 来读取配置文件
加五大注解的其中之一的目的是让该类随着springBoot项目的启动而注入,然后才能让配置文件的信息设置到该类中,运行结果已经粘贴在上面了

🧊4.3.4 配置集合

配置⽂件也可以配置 list 集合,如下所示
yml格式

 dbinformation:
   name:
    - mysql
    - sqlserver
    - db2

#行内写法
dbinformation: {name: [mysql,sqlserver,db2]}

配置文件读取,和对象的读取类似
新建一个类

package com.example.demo.model;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-01
 * Time: 17:24
 */
@ConfigurationProperties("dbinformation")
@Component
@Data
public class User {

    private List<String> name;

}

@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {


    3 @Autowired
    private User user;
    @PostConstruct
    public void doPost(){
        System.out.println(user.toString());
    }
}

运行看结果
在这里插入图片描述

🥫5.properties VS yml

properties和yml都是用于配置文件的格式,在Java应用程序中都有广泛的应用。它们的主要区别如下:

propertiesyml
格式以键值对的形式存储,每个键值对之间用等号连接使用缩进来表示层级关系,key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略
可读性冗余复杂yml文件因为采用缩进的方式,使得配置文件结构更加清晰,可读性更好
功能properties文件只支持基本的键值对yml文件支持更多的数据结构,如数组和嵌套结构等
通用性最早期的配置⽂件格式,也是创建 Spring Boot 项⽬默认的配置⽂件⽀持更多语⾔,如 Java、Go、Python 等

🥫6.查看系统配置项

这个是spring官网的资料,有需要的铁铁可以看看
https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html

🥫7.设置不同环境的配置⽂件

创建不同环境的配置⽂件:
application-dev.properties
application-prod.properties
application-test.properties

server.port=8888

只有横杠后面的才能改,其余不能改,这个也是约定大于配置思想的体现

在 application.properties 中设置运⾏环境

# 指定配置文件的运行环境
spring.profiles.active=test

在这里插入图片描述
设置成功了.其余的就不写了,写法一样

今天的讲解就到这里,我们下期再见了,886

在这里插入图片描述

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

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

相关文章

IDEA live templates

surround 在SQL的xml里 可以修改变量 官方文档 CDATA not null <if test"$SELECTION$ ! null and $SELECTION$ ! "> and $VAR1$ #{$SELECTION$} </if>not null like mysql <if test"$SELECTION$ ! null and $SELECTION$ ! "> and…

大数据技术之Clickhouse---入门篇---数据类型、表引擎

星光下的赶路人star的个人主页 今天没有开始的事&#xff0c;明天绝对不会完成 文章目录 1、数据类型1.1 整型1.2 浮点型1.3 布尔型1.4 Decimal型1.5 字符串1.6 枚举类型1.7 时间类型1.8 数组 2、表引擎2.1 表引擎的使用2.2 TinyLog2.3 Memory2.4 MergeTree2.4.1 Partition by分…

系统架构设计师_备考第2天(计算机组成与体系结构)

文章目录 考频&#xff08;3分左右&#xff09;一、计算机结构二、CPU组成三、冯诺依曼结构和哈弗结构四、层次化存储结构五、Cache 考频&#xff08;3分左右&#xff09; 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 计算机结构&#xff08;★&#xff0…

语义检索系统【四】:基于ERNIE-Gram的Pair-wise和基于RocketQA的CrossEncoder训练的单塔模型实现数据精排

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

阿里云负载均衡SLB网络型NLB负载均衡架构性能详解

阿里云网络型负载均衡NLB是阿里云推出的新一代四层负载均衡&#xff0c;支持超高性能和自动弹性能力&#xff0c;单实例可以达到1亿并发连接&#xff0c;帮您轻松应对高并发业务。网络型负载均衡NLB具有超强性能、自动弹性伸缩、高可用、TCPSSL卸载、多场景流量分发和丰富的高级…

Eureka 学习笔记3:EurekaHttpClient

版本 awsVersion ‘1.11.277’ EurekaTransport 用于客户端和服务端之间进行通信&#xff0c;封装了以下接口的实现&#xff1a; ClosableResolver 接口实现TransportClientFactory 接口实现EurekaHttpClient 接口实现及其对应的 EurekaHttpClientFactory 接口实现 private …

搜索与图论(一)

一、DFS与BFS 1.1深度优先搜索(DFS) DFS不具有最短性 //排列数字问题 #include<iostream> using namespace std;const int N 10; int n; int path[N]; bool st[N];void dfs(int u) {if(u n){for(int i 0;i < n;i) printf("%d",path[i]);puts("&qu…

配置IPv6 over IPv4手动隧道示例

组网需求 如图1所示&#xff0c;两台IPv6主机分别通过SwitchA和SwitchC与IPv4骨干网络连接&#xff0c;客户希望两台IPv6主机能通过IPv4骨干网互通。 图1 配置IPv6 over IPv4手动隧道组网图 配置思路 配置IPv6 over IPv4手动隧道的思路如下&#xff1a; 配置IPv4网络。配置接…

Linux怎么设置软链接(ln命令)

在Linux中&#xff0c;软链接&#xff08;Symbolic Link&#xff09;&#xff0c;它可以指向另一个文件或目录。类似于Windows中的快捷方式。 主要作用&#xff1a;文件路径简化&#xff1a;通过创建软链接&#xff0c;可以将长而复杂的文件路径简化为一个易于记忆和使用的链接…

electron+vue+ts窗口间通信

文章目录 一. 目的二.逻辑分析三. 代码示例 "types/node": "^20.3.1","vitejs/plugin-vue": "^4.1.0","vueuse/electron": "^10.2.1","electron": "^25.2.0","electron-packager":…

运算放大器(二):恒流源

一、实现原理 恒流源的输出电流能够在一定范围内保持稳定&#xff0c;不会随负载的变化而变化。 通过运放&#xff0c;将输入的电压信号转换成满足一定关系的电流信号&#xff0c;转换后的电流相当一个输出可调的简易恒流源。 二、电路结构 常用的恒流源电路如…

计算机视觉常用数据集介绍

1 MINIST MINIST 数据集应该算是CV里面最早流行的数据了&#xff0c;相当于CV领域的Hello World。该数据包含70000张手写数字图像&#xff0c;其中60000张用于train&#xff0c; 10000张用于test&#xff0c; 并且都有相应的label。图像的尺寸比较小&#xff0c; 为28x28。 数…

docker容器的安装(windows、linux本地安装和在线安装)

目录 一、Docker发行版本&#xff1a; 1、Windows安装Docker&#xff08;作为了解&#xff09; 2、Linux安装Docker 二、安装前准备&#xff1a; 三、默认的yum安装 四、安装docker-ce 五、阿里云镜像加速器 Docker支持在主流的操作系统平台上使用&#xff0c;包括Windo…

Socket 前端项目结构搭建

npm install socket.io-client --savenpm install element-plus --savenpm install vue-router4.0.12 --save简单的页面搭建 聊天系统登录前端实现 登录模板 <template><div class"login-container"><el-form ref"form" :model"fo…

GICI-LIB代码框架学习

一直想要学习多源融合&#xff0c;一直各种琐碎事情耽搁&#xff0c;没有进展。终于&#xff0c;今天以上海交大开源的GNSS/INS/Camera组合导航库为开始。 二话不说&#xff0c;github下载代码后&#xff0c;不编译&#xff0c;不运行&#xff0c;直接vs code打开工程&#xf…

小程序如何从分类中移除商品

​有时候商家可能需要在商品分类中删除某些商品&#xff0c;无论是因为商品已下架、库存不足还是其他原因。在这篇文章中&#xff0c;我们将介绍如何从分类中移除商品。 方式一&#xff1a;分类管理中删除商品。 进入小程序管理后台&#xff0c;找到分类管理&#xff0c;在分…

设计模式之开闭原则

什么是开闭原则? 开放封闭原则称为OCP原则&#xff08;Open Closed Principle&#xff09;是所有面向对象原则的核心。 “开闭原则”是面向对象编程中最基础和最重要的设计原则之一。 软件设计本身所追求的目标就是封装变化、降低耦合&#xff0c;而开放封闭原则正是对这一…

新手必备!程序员入职新公司一定要准备的7件事

入职新公司的前三个月是最艰难的&#xff0c;你需要重新适应很多东西&#xff0c;新的环境、新的同事、新的业务、新的工作流程等&#xff0c;如果你是一个刚毕业进入职场的小白&#xff0c;想要让自己尽快的去适应&#xff0c;应该做好充分的准备&#xff0c;这会让你更加的从…

免费商用 Meta 发布开源大语言模型 Llama 2

Meta 和微软深度合作&#xff0c;正式推出下一代开源大语言模型 Llama 2&#xff0c;并宣布免费提供给研究和商业使用。 Llama 2 论文地址&#xff1a;Llama 2: Open Foundation and Fine-Tuned Chat Models 据介绍&#xff0c;相比于 Llama 1&#xff0c;Llama 2 的训练数据多…

Spring Boot : ORM 框架 JPA 与连接池 Hikari

数据库方面我们选用 Mysql &#xff0c; Spring Boot 提供了直接使用 JDBC 的方式连接数据库&#xff0c;毕竟使用 JDBC 并不是很方便&#xff0c;需要我们自己写更多的代码才能使用&#xff0c;一般而言在 Spring Boot 中我们常用的 ORM 框架有 JPA 和 Mybaties &#xff0c;本…
最新文章