【SpringBoot3.x教程02】SpringBoot配置文件详解

前言:什么是配置文件

SpringBoot的配置文件是指用于定义和管理SpringBoot应用程序配置的文件。这些配置文件允许开发者调整和控制应用程序的行为,而无需改变代码。主要有两种格式的配置文件:
1、application.properties:这是一种使用简单键值对来配置的传统格式。它位于项目的src/main/resources目录下。每一项配置都是一行,以点分隔的属性名和其值组成,例如:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost/test

2、application.yml:这是一种使用YAML(YAML Ain’t Markup Language)格式的配置文件,也位于src/main/resources目录下。YAML是一种数据序列化格式,以数据的层次结构为基础,适合表示复杂的配置结构。YAML文件的读取顺序是从上到下,支持使用缩进表示层级关系,YAML文件是强格式的,对于缩进有着严格的要求,每次缩进两格代表一个属性,例如:

server:port: 8080
spring:datasource:url: jdbc:mysql://localhost/test

本文重点:配置文件中的常用配置

1. 基本属性配置

application.propertiesapplication.yml中配置应用的基本属性,比如端口、上下文路径等。

  • application.properties

    server.port=8080
    server.servlet.context-path=/app
    
  • application.yml

    server:port: 8080servlet:context-path: /app
    

2. 数据库配置

配置数据源,包括URL、用户名和密码等。

  • application.properties

    spring.datasource.url=jdbc:mysql://localhost:3306/mydb
    spring.datasource.username=root
    spring.datasource.password=secret
    
  • application.yml

    spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: secret
    

3. 日志配置

配置日志级别和日志文件路径。

  • application.properties

    logging.level.root=WARN
    logging.file.name=app.log
    
  • application.yml

    logging:level:root: WARNfile:name: app.log
    

4. 多环境配置

使用不同的配置文件管理不同环境的配置。

  • application-dev.properties

    server.port=8081
    
  • application-prod.properties

    server.port=80
    

激活特定环境的配置文件。

  • application.properties

    spring.profiles.active=dev
    
  • 通过命令行参数激活

    java -jar yourapp.jar --spring.profiles.active=prod
    

5. 自定义配置

定义自己的配置属性并在应用中引用。

  • application.properties

    app.custom.property=MyValue
    
  • 使用@Value注解引用

    @Value("${app.custom.property}")
    private String customProperty;
    

6. 配置文件中的占位符

使用已有的配置值作为其他配置值的一部分。

  • application.properties

    app.name=MyApp
    app.description=${app.name} is a SpringBoot application
    

7. 配置绑定到实体类

将配置文件的属性绑定到一个实体类上,支持各种类型数据的配置,比如List和Map。

  • application.yml

    app:name: MyAppdescription: My SpringBoot applicationfruits:- apple- banana- orangefruitColors:apple: redbanana: yelloworange: orange
    
  • 实体类

    @Component
    @ConfigurationProperties(prefix="app")
    public class MyAppProperties {private String name;private String description;// getters and setters
    }
    

代码截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结束语:

本文章讲述了配置文件中常用的一些配置内容,并给出了对应的代码示例,对应的代码会上传到github,下一节我们主要讲解SpringBoot的自动配置

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

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

相关文章

2.13计算机工作过程

2.三个级别的语言 1)机器语言。又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。 2)汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的…

滴滴基于 Clickhouse 构建新一代日志存储系统

ClickHouse 是2016年开源的用于实时数据分析的一款高性能列式分布式数据库,支持向量化计算引擎、多核并行计算、高压缩比等功能,在分析型数据库中单表查询速度是最快的。2020年开始在滴滴内部大规模地推广和应用,服务网约车和日志检索等核心平…

js SheetJS 合并表格导出到同一个excel中

最近有个需求,我在一个页面显示了4个表格, 然后合并导出到excel文件中 四个表,四个sheet,一个excel文件 最后导出时这样: 实现: 1,页面有个导出的checkbox,勾选则导出,不勾选不处理 2,在一个函数中,集中处理四个表数据获取,并将结果返回出来 //获取数据后返回为…

RabbitMQ(SpringAMQP)

一.SpringAMQP Spring的官方基于RabbitMQ提供了一套消息收发的模板工具:SpringAMQP。并且基于SpringBoot对其实现了自动装配 SpringAMQP官方地址:SpringAMQP SpringAMQP提供的功能: 自动声明队列、交换机及其绑定关系 基于注解的监听器模式,异步接收…

《 前端 vs. 后端:挑战与机遇的对决》

前言 前端开发和后端开发是构建网站、应用程序和其他软件的两个主要方面。它们各自负责不同的任务和功能。 前端开发: 定义:前端开发是指构建用户直接与之交互的网站或应用程序的过程。前端开发主要关注于用户界面和用户体验。技术栈:前端开发通常涉及使用 HTML、CSS 和 Ja…

【Azure 架构师学习笔记】- Azure Service Endpoint

本文属于【Azure 架构师学习笔记】系列。 前言 在做Azure 架构时,经常会被问到Service Endpoint这个点,那么这篇文章来介绍一下Service Endpoint(SE)。 Azure Service Endpoint 首先它是一个专用通道,在Azure 资源之…

HTML入门:05HTML多媒体

HTML入门:05HTML多媒体 1 video标签1.1 控制按钮:controls1.2 宽度和高度:width和heightt1.3 预载:preload1.4 静音:muted1.5 自动播放:autoplay1.6 无限循环:loop1.7 poster 2 audio标签 在早期…

开源项目_BERT_意图分类与槽填充

项目地址:GitHub - taishan1994/pytorch_bert_intent_classification_and_slot_filling: 基于pytorch的中文意图识别和槽位填充 项目运行: 1、#按照readme要求创建环境 conda create pytorch transformers python3.7.02、提示缺少seqeval包 pip instal…

利用 Redis 和 Lua 实现高效的限流功能

简介 在现代系统中,限流是一种重要的机制,用于控制服务端的流量并保护系统免受恶意攻击或请求泛滥的影响。本文将介绍如何利用 Redis 和 Lua 结合实现高效的限流功能。 一、什么是限流 限流指的是对系统中的请求进行控制和调节,确保系统在…

1908_Arm Cortex-M3的实现

1908_Arm Cortex-M3的实现 全部学习汇总: g_arm_cores: ARM内核的学习笔记 (gitee.com) 这是第一次看一份这样的手册,之前的MCU编程基本上就是专注于软件接口方面。而OS等方面的一些功能基本上都是用了现成的解决方案,因此也就没有过多的关注…

hdu-2047(dp做法)

hdu-2047 阿牛的EOF牛肉串 其他博客递一维推做法比较难想(我不会 升到二维简单很多&#xff0c;dp[i][j]表示长度为i时&#xff0c;最后一个字母为j #include<bits/stdc.h>using namespace std; const int maxn 5e6 5; const double pi 3.1415927; const int mod 100…

阿里二面,redis宕机了,如何快速恢复数据

背景 有个同学阿里二面&#xff0c;面试官问&#xff1a;redis宕机了&#xff0c;如何恢复数据&#xff1f; 这位同学当时一脸懵&#xff0c;不知道如何回答。 分析分析这个问题&#xff0c;redis宕机&#xff0c;要想恢复数据&#xff0c;首先redis的数据有没有做持久化&…