Spring —— Spring Boot 配置文件

JavaEE传送门

JavaEE

Spring —— Bean 作用域和生命周期

Spring —— Spring Boot 创建和使用


目录

  • Spring Boot 配置文件
    • Spring Boot 配置文件格式
    • properties配置文件
      • properties 基本语法
      • properties 缺点
    • yml 配置文件
      • yml 基本语法
      • yml 配置不同类型数据及 null
      • yml 配置对象
      • yml 配置集合
    • properties VS yml
    • 设置不同环境的配置文件


Spring Boot 配置文件

如果没有配置信息, Spring Boot 项目就不能连接和此操作数据库, 甚至是不能保存可以用于排查问题的关键日志, 配置文件的作用是非常重要的.

  1. 系统使用的配置文件 (系统配置文件), 如端口号的配置, 链接数据库的配置
  2. 用户自定义配置文件

Spring Boot 配置文件格式

  1. .properties
  2. .yml (yaml)

# 注意事项 #

  1. 当一个项目中, 存在两种格式的配置文件, 并且两个配置文件间中设置了相同的配置项, 但之不同时. .properties 配置文件的优先级最高, 但加载完 .properties 文件之后, 也会加载 .yml 文件的配置信息.
  2. 理论上讲 .properties 可以和 .yml 共存, 但实际业务中, 我们通常会采用一种统一的配置文件格式, 这样可以更好的维护.

properties配置文件

properties 基本语法

# properies 以键值的形式配置的: key=vaule.

# 设置端口号
server.port=8888

# 我们还可以自定义配置项

myTest=gujiu

我们还可以读取配置项中的内容, 使用 @Value 注解来实现, @Value 注解使用 “${}” 的格式读取.

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {
    @Value("${myTest}")
    private String mytest;

    @RequestMapping("/getconf")
    public String getConfig() {
        return mytest;
    }
}

注: 不可以用 @Value(“myTest”) 读取, 其含义是, 将字符串赋值给 mytest 变量.


properties 缺点

当我们想配置数据库的时候.

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

从上述配置 key 中可以看出, properties 配置文件中会有很多的冗余信息.

想要解决这个问题,就可以使用 yml 配置⽂件的格式化了.


yml 配置文件

yml (YAML - Yet Another Markup Language) 翻译成中文 “另一种标记语言”

yml 优点

  1. yml 是一个可读性高, 写法简单, 易于理解, 他的语法和 JSON 语言类似.
  2. yml 支持更多的数据类型, 它可以简单表达清单 (数组), 散列表, 标量等数据形态, 它使用空白符号缩进和大量依赖外观的特色, 特别时候来表达或编辑数据结构, 各种配置文件等.
  3. yml 支持更多的编程语言, 它不只是 Java 中可以使用在 Golang, PHP, Python, Ruby, JavaScripy, Perl 中.

yml 基本语法

yml 是树形结构的配置文件: key: vaule .

# 注意 # key 和 vaule 直接使用英文冒号加空格的方式组成, 空格不可省略.

# 配置端口
server:
  port: 6666
# 自定义配置  
mytest2: gugu

同样是使用 @Value 注解使用 “${}” 的格式读取.

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {
    @Value("${mytest2}")
    private String myTest;

    @RequestMapping("/getconf2")
    public String getConfig2() {
        return myTest;
    } 
}

当我们配置数据库连接

# 配置数据库连接
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
    username: root
    password: 123456


yml 配置不同类型数据及 null

# 字符串
string.value: Hello

# 布尔值,true或false
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: ~

注意事项:value 值加单双引号

# 字符串
str1: Hello \n Spring Boot.
str2: 'Hello \n Spring Boot.'
str3: "Hello \n Spring Boot."

读取一下, str1, str2, str3.

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {
    @Value("${str1}")
    private String str1;

    @Value("${str2}")
    private String str2;

    @Value("${str3}")
    private String str3;

    @PostConstruct
    public void postConstruct() {
        System.out.println("str1: " + str1);
        System.out.println("str2: " + str2);
        System.out.println("str3: " + str3);
    }
}

运行结果展示:

# 注意事项 #

  • 字符串默认不⽤加上单引号或者双引号.
  • 单引号会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据.
  • 双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思.

yml 配置对象

比如: 我们配置一个学生对象

student:
 id: 1
 name: Gujiu
 age: 18

或者使用行内写法

student: {id: 1,name: Gujiu,age: 18}

读取配置对象

这个时候就不能用 @Value 来读取配置中的对象了,此时要使用另⼀个注解 @ConfigurationProperties 来读取

# 首先要创建一个实体类:

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

}

# 调用类代码

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {
    @Autowired
    private Student student;

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

//运行结果: Student(id=1, name=Gujiu, age=18)

yml 配置集合

配置文件也可以配置 list 集合

mynames:
 name:
 - Gujiu
 - GUJIU
 - gugu

或者使用行内写法

mynames: {name: [Gujiu,GUJIU,gugu]}

读取配置对象

和读取对象一样, 使用 @ConfigurationProperties 来读取

@Component
@ConfigurationProperties("mynames")
@Data
public class ListConfig {
 private List<String> name;
}

properties VS yml

  • 二者都是 Spring Boot 的配置文件, 二者的诞生时间是不同的. properties 是默认的配置文件, 诞生的比较早. yml 是后来才出现的另一种标记语言的配置文件.
  • properties 是以 key=vaule 的形式配置的键值类型的配置文件, 而 yml 使用的类似 JSON 格式的树形配置方式进行配置的. yml 层级之间使用换行缩进的方式配置,key 和 value 之间使用 “: ” 英文冒号加空格的方式设置,并且空格不可省略.
  • properties 为早期并且默认的配置文件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题
  • yml 通用性更好, 支持更多语言,如 Java、Go、Python 等,如果是云服务器开发,可以使用一份配置⽂件作为 Java 和 Go 的共同配置文件.
  • yml 功能比较强大, 支持更多的数据类型, 对中文的兼容性非常好.

设置不同环境的配置文件

  1. 创建不同环境的配置文件:

    • application-dev.yml (开发环境)
    • application-prod.yml (生产环境)
  2. application.yml 中设置运行环境:

    # 开发环境
    spring:
      profiles:
    	active: dev
    
    # 生产环境
    spring:
      profiles:
    	active: prod
    

🌷(( ◞•̀д•́)◞⚔◟(•̀д•́◟ ))🌷

以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!
在这里插入图片描述
在这里插入图片描述

这里是Gujiu吖!!感谢你看到这里🌬
祝今天的你也
开心满怀,笑容常在。

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

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

相关文章

方案设计——食物测温仪方案

食物测温仪&#xff0c;在食物烹饪时&#xff0c;温度和时间至关重要&#xff0c;所以食物测温仪孕育而生&#xff0c;当用户使用时只需将食物测温仪的探头插入食物中&#xff0c;即刻能得到当前食物温度数据&#xff0c;不必用经验判断。做为一款食物测温仪&#xff0c;运用场…

Extra Finance 主网测试版上线,完成任务领空投

DeFi 的广泛应用将上一轮牛市推向顶峰&#xff0c;也让区块链具有了更多的拓展性。经过熊市的洗礼&#xff0c;DeFi 应用开始升级和优化&#xff0c;并且衍生出更多更加具有实用性和创新性的新产品。DeFi 已经成为区块链的基础设施&#xff0c;为更多的应用和创新提供帮助。下一…

“AI孙燕姿”们侵了谁的权?

“2003年大火的歌手&#xff1a;孙燕姿&#xff1b;2023年大火的歌手&#xff1a;AI孙燕姿”。在B站&#xff0c;这条评论获赞2800多&#xff0c;而被网友们集体点赞的是用AI克隆孙燕姿声音后演唱其他歌曲的视频。 截止目前&#xff0c;Up主们打造的“AI孙燕姿”已翻唱了百余首…

cam_lidar_calibration标定速腾激光雷达和单目相机外参

目录 一、资源链接二、代码测试2.1安装依赖2.2代码下载和修改2.2.1 optimiser.h文件2.2.2 feature_extractor.h文件 2.3编译代码2.4测试数据集2.4.1迭代计算2.4.2查看校准结果 三、标定自己激光雷达和相机3.1修改代码3.1.1camera_info.yaml配置文件3.1.2params.yaml配置文件3.1…

【Linux】Linux编辑神器vim的使用

目录 一、Vim的基本概念 二、Vim的基本操作 1、进入vim 2、正常模式切换至插入模式 3、插入模式切换至正常模式 4、正常模式切换至底行模式 5、退出Vim编辑器 三、Vim正常模式命令集 1、移动光标 2、删除文字 3、复制 4、替换 5、撤销 四、Vim底行模式命令集 1、列出行号 2、光…

Spring MVC:常用参数(注解)的使用和参数绑定的验证

Spring MVC&#xff1a;常用参数&#xff08;注解&#xff09;的使用和参数绑定的验证 一、学习资源二、基础源码三、实验结果3.1 Spring MVC常用参数Controller和RequestMappingRequestMappingRequestParamPathVariableCookie ValueRequestHeader 3.2 Spring MVC参数绑定3.2.1…

JavaScript实现贪吃蛇小游戏(网页单机版)

文章目录 项目地址项目介绍游戏开始游戏暂停游戏模式游戏死亡重新开始 结尾 今天使用 JavaScript 实现了一个网页版的贪吃蛇小游戏。 项目地址 Github: https://github.com/herenpeng/snakeGitee: https://gitee.com/herenpeng/snake线上体验&#xff1a;https://herenpeng.g…

在线未注册域名批量查询-域名注册批量查询

域名批量注册查询 域名批量注册查询是一种工具&#xff0c;可以帮助用户批量查询并注册多个域名。这种工具通常被域名管理者、品牌专家、互联网营销人员等使用。 以下是域名批量注册查询工具的优点&#xff1a; 提高效率&#xff1a;与手动单独注册域名相比&#xff0c;域名批…

计算机网络实验(ensp)-实验1:初识eNSP仿真软件

目录 实验报告&#xff1a; 实验操作 1.建立网络拓扑图并开启设备 2.配置路由器 1.输入命名&#xff1a;sys 从用户视图切换到系统视图 2.输入命名&#xff1a;sysname 姓名 修改路由器名字 3.输入命名&#xff1a;interface g0/0/0 进入端口视图g0…

如何学习web前端开发?这样学前端事半功倍,能救一个是一个!

非常理解想要自学前端的伙伴&#xff0c;因为好程序员的学员一开始也是自学插画的&#xff0c;很多同学&#xff0c;自学到最后真的非常枯燥乏味&#xff0c;且走了很多弯路。小源想着能帮一把是一把的原则&#xff0c;这两天整理了一份前端的高效学习路线&#xff0c;想学web前…

Redis 学习笔记

一、简介 1、纯内存操作&#xff08;理解成容量就是内容条&#xff09; 2、作为缓存使用&#xff08;因为内存条操作&#xff0c;比磁盘速度快&#xff09; 二、 常见命令 类型命令string set、get、mset、mget、setrange、getrange、 incr、decr、incrby、decrby、incrbyfl…

基于Python3的tkinter Text文本框加滚动条显示信息

用tkinter进行界面程序开发中&#xff0c;经常需要将信息展示到界面上&#xff0c;给用户及时的反馈和想要看到的结果。Text控件允许用户以不同的样式、属性来显示和编辑文本&#xff0c;它可以包含纯文本或者格式化文本&#xff0c;同时支持嵌入图片、显示超链接以及带有 CSS …

【纳什博弈、ADMM】基于纳什博弈和交替方向乘子法的多微网主体能源共享研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Spring 注解之@RestController与@Controller的区别

目录 1&#xff1a;介绍 2&#xff1a;区别 3&#xff1a;总体来说 4&#xff1a;社区地址 1&#xff1a;介绍 RestController 和 Controller 是 Spring MVC 中常用的两个注解&#xff0c;它们都可以用于定义一个控制器类。 2&#xff1a;区别 返回值类型不同&#xff1a;…

使用插件快速生成代码

使用插件快速生成代码 咋们常说&#xff0c;授人以鱼不如授人以渔&#xff0c;在这里给大家提供一些技巧性的东西&#xff0c;方便一些新手同学可以快速上手&#xff0c;同时&#xff0c;也提高我们的开发兴趣与开发热情&#xff01; 主要讲什么呢&#xff0c;我们来学一学如何…

让AI来告诉你什么叫幽灵堵车

使用环境参考 CocosCreator v3.7.2 ChatGPT 正文 什么是幽灵堵车 堵车&#xff0c;大家都不陌生&#xff01; 堵车时我就思维发散&#xff0c;用 CocosCreator 模拟下堵车应该挺好玩&#xff0c;网上总说高速上最前面如果有个龟速的车&#xff0c;后面能堵车堵个两三公里。…

文本三剑客之sed

sed 一.概念 sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输入&#xff0c;要么存储一个命令文本文件中。二.工作流程 读取: sed从输入…

【论文阅读】MINOTAUR: Multi-task Video Grounding From Multimodal Queries

背景动机 细粒度的视频理解已经成为增强现实(AR)和机器人应用开发的关键能力。为了达到这种级别的视频理解&#xff0c;智能体(例如虚拟助手)必须具备识别和推理视频中捕获的事件和对象的能力&#xff0c;处理一系列视觉任务&#xff0c;如活动检测、对象检索和(空间)时间基础…

ChatGPT教程(终极版)

纯小白关于ChatGPT入门&#xff0c;你看我这篇文章就够了。 如果你已经用上了ChatGPT&#xff0c;更要恭喜你挖到宝藏&#xff0c;后面的高级技巧一定能让你有收获。 文章包含以下内容&#xff1a; 一、ChatGPT是啥&#xff1f;有什么用&#xff1b; 二、ChatGPT如何注册&…

jetson nx 用windows远程连接

VNC Viewer远程连接 一、jetson nx配置vnc 1、安装客户端 sudo apt-get install xrdp vnc4server xbase-clients2、进入nano/nx桌面&#xff0c;打开“Setting–>Desktop sharing”&#xff0c;没反应&#xff0c;据说是bug&#xff0c;我试过nano和nx都一样。首先输入下…