springBoot的配置文件

目录

配置文件的格式 

1. 配置项的分类和中文支持

2.  properties 配置文件

读取配置文件

优缺点分析

3. yml 配置文件 

读取配置文件

优缺点分析:

 4. 多个配置文件

 5. properties 和 yml 的对比


在 springBoot 中很多重要的数据是需要通过配置文件进行配置的。

例如:项目启动的端口号,数据库的连接信息等。 

配置文件的格式 

在 springBoot 中配置文件有两种格式:一种为 properties,一种为 yml (yaml); 

首先 properties 和 yml 配置文件是可以同时存在于项目中的。但如果在此项目中,这两个配置文件的某一个配置项是相同的时候,会以 properties 为主,也就是 properties 文件的优先级更高,但也会执行 yml 文件中的配置项;(通常情况下,也只会使用一个配置文件) 

1. 配置项的分类和中文支持

 在配置文件中,配置项一般有两种:

 1. 系统配置项:项目端口号...

 2. 用户自定义配置项:通过用户自己定于;

一般默认配置文件不支持中文的,需自行设置,在settings文件中对项目(一般需要针对此项目和新项目的两个settings都修改) 的encoding 都改为 UTF-8;

 

2.  properties 配置文件

1. properties 配置文件是 sprinBoot 项目的默认配置文件,以 key=value 的格式进行配置;

# 配置项目的端口号
server.port=8080
# 数据库的配置项
spring.datasource.url=xxx
spring.datasource.username=xxx
spring.datasource.password=xxxclass=hello

读取配置文件

读取配置文件采取如下格式:

    @Value("${class}")      // "${}"public String classR;

 表示读取配置文件中 key 为 class  的值;

优缺点分析

1. 它是系统默认的配置文件;

2. properties 配置项的优先级比 yml 高;

3. 写法简单,不容易出错;

4. 但是写法有些冗余,例如上述数据库的配置中,spring.datasource重复写了三次,于是就引出了 yml;

3. yml 配置文件 

yml的基本语法是:key: value ,需要注意的是 key 和 value 之间通过 :+空格 来间隔;空格不可省略!!!

且取代 spring 和 url 之间 . 的是换行缩进;

~ 表示 null;

spring:datasource:url: xxxusername: xxxpassword: xxx

读取配置文件

读取方式跟 properties 的方式是一样的;

在 yml 配置文件还可以配置对象(注意要重写 setter 方法,因为要从配置文件中去获取对应的数值,使用 setter 方法赋值给当前的 Bean 对象),使用注解 @ConfigurationProperties("类名")从配置文件中获取

@ConfigurationProperties("student")        // 从yml配置文件中获取类
@Component
@Setter     // lombok
@ToString   // lombok
public class StudentComponent {public int id;      // 属性名要和配置文件中的配置项相对应public String name;public int age;
}
@Controller             // springBoot 不再需要像 spring 一样要在配置文件中说明了哪个路径下需要存入Bean,可以理解为扫描路径约定为启动类的路径下
@ResponseBody           // 加在类上,表示当前类中的所有方法返回的都是非静态页面的数据     -> 返回的是数据而不是页面
public class TestController {@Value("${mystr1}")public String mystr1;@Value("${mystr2}")public String mystr2;@Value("${mystr3}")public String mystr3;@Value("${student.name}")    // 从配置文件中读取对应类的属性public String name;@Autowired             // 从容器中读取对象private StudentComponent studentComponent;@PostConstruct      // 初始化方法public void  doPostConstruct(){System.out.println("-----------------------");System.out.println(mystr1);System.out.println(mystr2);System.out.println(mystr3);System.out.println("-----------------------");System.out.println(name);System.out.println(studentComponent);}}

也可以配置集合,使用到的注解和配置对象一样:

dbtypes: {name: [str1,str2,str3]}
@Component
@ConfigurationProperties("dbtypes")   // 从配置文件中获取对应集合
@Data   // lombok
public class ListComponent {private List<String> name;
}
@Controller             
@ResponseBody           
public class TestController {@Autowiredprivate ListComponent listComponent;@PostConstruct      // 初始化方法public void  doPostConstruct(){System.out.println(listComponent.getName());}}

优缺点分析:

1. yml 格式就没有那么冗余了,可读性也更高;

2. yml支持更多种编程语言;

3. yml 支持的类型更多,还可以读取对象;

4. 但是格式需要多注意,以免出错;

 4. 多个配置文件

在正常的开发环境中,会分为开发,测试,生产等多个环境,此时多个环境下,项目的一些 配置是不一样的,比如是端口号可能是不一致的,那么此时就需要到多个配置文件,不同的环境下对应一个配置文件,还需要一个总配置文件,写不同环境下相同的配置。那么此时就可以通过 总的配置文件来指定要执行哪个环境下的配置问价,不管执行哪个环境下的配置文件,总配置文件都会执行。

配置文件规则:

 1. 必须有主配置文件,主配置文件名必须为 application.yml(properties);

 2. 不同平台的配置文件,每个平台拥有一个配置文件 ,配置文件名要求为 application-xxx.后缀;

对于要执行哪个配置文件,通过在主配置文件中执行 ( action中的数值是 xxx )

spring:profiles:active: test    

 此时执行的就是 application-test 配置文件和主配置文件。

 5. properties 和 yml 的对比

1. 格式上:properties 是以 key=value 的形式配置的键值类型,而 yml 使⽤的是类似 json 格式的树形配置⽅式进⾏配置的,yml 层级之间使⽤换行缩进的方式配置,key 和 value 之间使用 (:+ 空格)的方式!!!
2. properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题;
3. yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,也支持更多的数据类型;

更多的系统配置项:https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html 

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

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

相关文章

并发——什么是线程,什么是进程

文章目录 1.1. 何为进程?1.2. 何为线程? 1.1. 何为进程? 进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位&#xff0c;因此进程是动态的。系统运行一个程序即是一个进程从创建&#xff0c;运行到消亡的过程。 在 Java 中&#xff0c;当我们启动 main 函数时…

npm install 安装慢的问题处理

原因 npm install 默认使用的安装镜像时国外的镜像&#xff0c;国内使用会受到网络的限制。 解决方案 更换网络更换npm的安装镜像为国内&#xff0c;比如&#xff1a; npm config set registry https://registry.npm.taobao.org

qt源码---事件系统之QCoreApplication

上一节分析了qt和windows系统之间的消息的传递&#xff0c;本节着重看一下&#xff0c;qt内部的事件是如何传递的&#xff1f; 1.sendEvent函数 在使用的自定义事件时&#xff0c;有时需要手动抛出一个事件&#xff0c;常用的方式有2种&#xff0c;其一时阻塞式的sendEvent函…

Kubernetes(K8s)从入门到精通系列之十:使用 kubeadm 创建一个高可用 etcd 集群

Kubernetes K8s从入门到精通系列之十&#xff1a;使用 kubeadm 创建一个高可用 etcd 集群 一、etcd高可用拓扑选项1.堆叠&#xff08;Stacked&#xff09;etcd 拓扑2.外部 etcd 拓扑 二、准备工作三、建立集群1.将 kubelet 配置为 etcd 的服务管理器。2.为 kubeadm 创建配置文件…

微服务间消息传递

微服务间消息传递 微服务是一种软件开发架构&#xff0c;它将一个大型应用程序拆分为一系列小型、独立的服务。每个服务都可以独立开发、部署和扩展&#xff0c;并通过轻量级的通信机制进行交互。 应用开发 common模块中包含服务提供者和服务消费者共享的内容provider模块是…

有关OpenBSD, NetBSD, FreeBSD -- 与GPT对话

1 介绍一下 - OpenBSD, NetBSD, FreeBSD 当谈论操作系统时,OpenBSD、NetBSD和FreeBSD都是基于BSD(Berkeley Software Distribution)的操作系统,它们各自是独立开发的,并在BSD许可下发布。这些操作系统有很多共同点,但也有一些差异。以下是对它们的简要介绍: OpenBSD: O…

阿里云翻译使用

代码阿里云翻译包 代码 package xxx.yyy.zzz;import com.aliyun.alimt20181012.models.TranslateGeneralResponse; import org.apache.commons.lang3.StringUtils;import java.util.*; import java.util.stream.Collectors;public class AlibabaCloudTranslation {//默认idpub…

K8S系列文章 之 编写自动化部署K8S脚本

介绍 通过ansible脚本shell实现自动化部署k8s基础集群(v1.25.0) 部署结构 1. 通过二进制部署包镜像安装k8s集群、目录etcd节点只支持1-3个节点、最多三个etcd节点 2. 因k8s版本相对较新、需要升级内核来支持后台程序、当前版本只支持Cento7&#xff0c;内核版本(5.19.4-1.el7…

Object Map 的相互转换

学生业务对象定义&#xff1a;Student Student student new Student(); student.setId(1L); student.setName("令狐冲") student.setAge(10) 第一种&#xff1a;通过Alibaba Fastjson实现 pom.xml 文件依赖 <dependency><groupId>com.alibaba</g…

【EI/SCOPUS征稿】第三届电子通信与计算机科学技术国际学术会议(ECCST 2023)

第三届电子通信与计算机科学技术国际学术会议&#xff08;ECCST 2023&#xff09; 2023 3rd International Conference on Electronic Communication,Computer Science and Technology 2023年电子通信与计算机科学技术国际学术会议定于2023年9月15-17日在中国上海举行。会议旨…

培训报名小程序报名功能开发

目录 1 创建页面2 新建URL参数3 课程详细信息4 报名数据源创建5 报名信息功能开发6 设置页面跳转7 最终实现的效果总结 在培训报名小程序中&#xff0c;我们已经开发了首页和列表页。在列表页点击报名时就跳转到报名页面&#xff0c;先看我们的原型 报名页分为两个部分&#x…

供应链售后服务自动化,利用软件机器人将数据整合提升效率

随着供应链管理的不断发展&#xff0c;售后服务的重要性也日益凸显。良好的售后服务不仅可以提高客户满意度&#xff0c;还能增强品牌形象和忠诚度。然而&#xff0c;传统的供应链售后服务往往存在繁琐的操作、低效率和易出错的问题。为了解决这一挑战&#xff0c;越来越多的企…

ABAQUS启动GPU加速计算

文章目录 系统说明CUDA安装安装cuDNNABAQUS设置Lamb波压电仿真 系统说明 基于笔记本电脑&#xff0c;RTX4060&#xff0c;win11系统。 ABAQUS的有限元求解器是基于CPU的&#xff0c;但是它也支持使用GPU进行加速计算。仅支持隐式求解器standard。显示求解器explicit不能用。 …

Golang之路---04 并发编程——WaitGroup

WaitGroup 为了保证 main goroutine 在所有的 goroutine 都执行完毕后再退出&#xff0c;前面使用了 time.Sleep 这种简单的方式。 由于写的 demo 都是比较简单的&#xff0c; sleep 个 1 秒&#xff0c;我们主观上认为是够用的。 但在实际开发中&#xff0c;开发人员是无法…

【大数据】Flink 详解(二):核心篇 Ⅰ

Flink 详解&#xff08;二&#xff09;&#xff1a;核心篇 Ⅰ 14、Flink 的四大基石是什么&#xff1f; ​ Flink 的四大基石分别是&#xff1a; Checkpoint&#xff08;检查点&#xff09;State&#xff08;状态&#xff09;Time&#xff08;时间&#xff09;Window&#xff…

《面试1v1》ElasticSearch架构设计

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

AWS多账户单点登录 IAM Identity Center(AWS SSO)

需求场景 多个aws账户&#xff0c;登陆麻烦且不安全&#xff0c;SSO单点功能并且外部身份提供者 — 如果您要管理外部身份提供者&#xff08;IdP&#xff09;&#xff08;例如 Okta 或 Active Directory&#xff09;中的用户。 官方文档&#xff1a;https://docs.aws.amazon.c…

若依vue前端有全局用户信息变量吗

"若依"是一个基于SpringBoot和Vue的前后端分离的开源项目。在前端Vue部分&#xff0c;全局用户信息通常保存在Vuex中&#xff0c;Vuex是Vue.js的状态管理模式。它提供了一个集中式存储来管理所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生…

Linux命令200例:cd用于改变当前工作目录(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

【玩转23种Java设计模式】行为型模式篇:责任链模式

软件设计模式&#xff08;Design pattern&#xff09;&#xff0c;又称设计模式&#xff0c;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接&…