最全面的SpringBoot教程(二)——SpringBoot配置文件
创始人
2024-05-23 02:48:41
0

前言

在这里插入图片描述

本文为SpringBoot配置文件相关内容介绍,下边将对配置文件分类yaml基本语法yaml数据格式获取数据profile-运维项目内部配置文件加载顺序项目外部配置文件加载顺序等进行详尽介绍~

📌博主主页:小新要变强 的主页
👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~
👉Java微服务开源项目可参考:企业级Java微服务开源项目(开源框架,用于学习、毕设、公司项目、私活等,减少开发工作,让您只关注业务!)


目录

SpringBoot配置文件

  • 前言
  • 目录
  • 一、配置文件分类
  • 二、yaml基本语法
  • 三、yaml数据格式
  • 四、获取数据
  • 五、profile-运维
  • 六、项目内部配置文件加载顺序
  • 七、项目外部配置文件加载顺序
  • 后记

在这里插入图片描述

一、配置文件分类

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。

(1)默认配置文件名称:application

(2)在同一级目录下优先级为:properties>yml > yaml

例如:

配置内置Tomcat的端口

properties:

server.port=8080

yml:

server: port: 8080

init工程:

修改application.properties

server.port=8081

新建application.yml

server: port: 8082

新建application.yml

server: port: 8083

二、yaml基本语法

🍀(1)概念

YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入。

🍀(2)语法特点

  • 大小写敏感
  • 数据值前边必须有空格,作为分隔符
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的空格数目可能不同,导致层次混乱)
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • ‘’#" 表示注释,从这个字符一直到行尾,都会被解析器忽略
server: port: 8080  address: 127.0.0.1
name: abc

三、yaml数据格式

🍀(1)对象(map): 键值对的集合。

person:  name: itlils
# 行内写法
person: {name: itlils}

🍀(2)数组: 一组按次序排列的值

address:- beijing- shanghai
# 行内写法
address: [beijing,shanghai]

🍀(3)纯量: 单个的、不可再分的值

msg1: 'hello \n world'  # 单引忽略转义字符
msg2: "hello \n world"  # 双引识别转义字符

🍀(4)参数引用

name: itlils 
person:name: ${itlils} # 引用上边定义的name值

四、获取数据

🍀(1)@Value

  #获取普通配置@Value("${name}")private String name;#获取对象属性@Value("${person.name}")private String name2;#获取数组@Value("${address[0]}")private String address1;#获取纯量@Value("${msg1}")private String msg1;

🍀(2)Evironment

@Autowiredprivate Environment env;System.out.println(env.getProperty("person.name"));System.out.println(env.getProperty("address[0]"));

🍀(3)@ConfigurationProperties

注意:prefix一定要写

@Component
@ConfigurationProperties(prefix = "person")
public class Person {private String name;private int age;private String[] address;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;}public String[] getAddress() {return address;}public void setAddress(String[] address) {this.address = address;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}
}

修改controller:

@Autowired
private Person person;System.out.println(person);String[] address = person.getAddress();for (String s : address) {System.out.println(s);}

去掉报警提示:

 		org.springframework.bootspring-boot-configuration-processortrue

五、profile-运维

🍀(1)背景:profile是用来完成不同环境下,配置动态切换功能的。

🍀(2)profile配置方式

多profile文件方式:提供多个配置文件,每个代表一种环境。主配置文件application.properties配置:

spring.profiles.active=dev

​ application-dev.properties/yml :开发环境

​ application-test.properties/yml :测试环境

​ application-pro.properties/yml :生产环境

​ yml多文档方式:

​ 在yml中使用 — 分隔不同配置

---
server:port: 8081
spring:profiles: dev
---
server:port: 8082
spring:profiles: pro
---
server:port: 8083
spring:profiles: test
---
spring:profiles:active: dev

🍀(3)profile激活方式

  • 配置文件: 再配置文件中配置:spring.profiles.active=dev
  • 虚拟机参数:在VM options 指定:-Dspring.profiles.active=pro
  • 命令行参数: --spring.profiles.active=dev
  • 相当于上线时,运行jar包:java -jar xxx.jar --spring.profiles.active=dev

测试:使用maven 打包此项目,在target包中出现springboot-profiles-0.0.1.jar

cmd 输入:

java -jar springboot-profiles-0.0.1.jar --spring.profiles.active=test

六、项目内部配置文件加载顺序

加载顺序为下文的排列顺序,高优先级配置的属性会生效

  • file:./config/: 当前项目下的/config目录下
  • file:./ : 当前项目的根目录
  • classpath:/config/:classpath的/config目录
  • classpath:/ : classpath的根目录

测试: 新建springboot-config目录,分别在以上目录创建配置文件。

注意:

  • (1)项目根目录为springboottest。
  • (2)高级配置文件只覆盖低级配置文件的重复项。低级配置文件的独有项任然有效。最低配置文件中增加:
server.servlet.context-path = /test

访问: http://localhost:8084/test/hello

七、项目外部配置文件加载顺序

外部配置文件的使用是为了不修改配置文件做的。

(1)命令行

java -jar app.jar --name="Spring“ --server.port=9000

(2)指定配置文件位置

 java -jar myproject.jar --spring.config.location=d://application.properties

作用: 生产环境,随时改变环境变量时,可以通过改变配置文件来做。不需重新打包项目。


后记

在这里插入图片描述

👉Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~
👉算法刷题路线可参考:算法刷题路线总结与相关资料分享,内含最详尽的算法刷题路线指南及相关资料分享~

相关内容

热门资讯

包粽子比赛的范文英语【经典6... 篇一:包粽子比赛的范文英语In the traditional Chinese culture, t...
网购英语作文【优秀6篇】 网购英语作文 篇一The Advantages and Disadvantages of Onlin...
学英语写200字作文【精彩6... 学英语写200字作文 篇一:如何提高英语口语能力英语口语是学习英语的重要组成部分,但是很多学生在口语...
有志者事竟成英语作文及译文(... 有志者事竟成英语作文及译文 篇一Title: Where there's a will, there...
感恩节英文作文【精选6篇】 感恩节英文作文 篇一Title: Thanksgiving Day - A Time for Gra...
要强的我作文350字【精选3... 要强的我作文350字 篇一我是一个要强的人,对于自己的要求总是很高,无论是学习还是生活。我相信只有要...
特殊的课堂 Special ... 特殊的课堂 Special classroom 篇一特殊的课堂 Special classroom ...
学习英语的争论高中英语作文【... 学习英语的争论高中英语作文 篇一标题:学习英语的重要性在当今的全球化时代,英语已经成为了一门全球通用...
大学的优秀英语作文带翻译【精... 大学的优秀英语作文带翻译 篇一:大学生应如何充分利用大学资源Title: How College S...
高职单招英语作文范文【经典6... 高职单招英语作文范文 篇一:实施高职单招的优势和挑战In recent years, vocatio...
友谊的英语名言【推荐4篇】 友谊的英语名言 篇一Friendship is a treasure that knows no b...
小学英语句子对话【优秀3篇】 小学英语句子对话 篇一Title: A Day at the ZooIntroduction:One...
英语优秀作文:人与自然(经典... 英语优秀作文:人与自然 篇一The Beauty and Fragility of NatureNa...
老师的英语作文 老师的英语作文15篇  在平平淡淡的日常中,大家都有写作文的经历,对作文很是熟悉吧,作文是通过文字来...
中国青年节英语作文 Chin... 中国青年节英语作文 Chinese Youth Day 篇一Chinese Youth Day is...
梦想的英语作文(最新6篇) 梦想的英语作文 篇一My DreamEveryone has dreams. Some dream ...
高中英语作文常用句型(推荐3... 高中英语作文常用句型 篇一常用句型在高中英语作文中扮演着非常重要的角色。它们不仅能够提高文章的语言表...
我的十年英语作文(精选4篇) 我的十年英语作文 篇一十年前,我刚刚开始接触英语。那时的我对于这门陌生的语言充满了好奇和期待。我记得...
英语作文范文大全150字【优... 英语作文范文大全150字 篇一Title: The Importance of Learning E...
六下英语好词及句子精选490... 六下英语好词及句子 精选69句1. It reveals the unquestionable fa...