当前位置: 首页 > news >正文

SpringBoot概述SpringBoot基础配置yml的使用多环境启动


在这里插入图片描述

🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
c语言
数据结构
javaEE
操作系统

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


SpringBoot简介

  • 一、 SpringBoot概述
    • 1.1 起步依赖
    • 1.2 辅助功能
    • 1.3 SpringBoot程序启动
  • 二、 SpringBoot基础配置
    • 2.1 配置文件格式
      • 2.1.1 自动提示功能消失解决方案
    • 2.2 yaml
      • 2.2.1 yaml语法规则
      • 2.2.2 yaml数据读取方式
        • 2.2.2.1 使用`@Value`读取单个数据,属性名引用方式:${一级属性名.二级属性名......}
        • 2.2.2.2 封装全部数据到`Environment`对象
        • 2.2.2.3 自定义对象封装指定数据
        • 2.2.2.4 自定义对象封装指定数据警告解决方案
    • 2.3 多环境启动
      • 2.3.1 yml文件多环境启动方式
      • 2.3.2 application.properties文件多环境启动
      • 2.3.3 多环境命令行启动参数设置
      • 2.3.3 多环境开发兼容问题(Maven与boot)
    • 2.4配置文件分类

一、 SpringBoot概述

1.1 起步依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.14</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>springboot_quick_start</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot_quick_start</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
</project>
  • 根据spring-boot-starter-web可以得到它对应的配置:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.14</version></parent><artifactId>spring-boot-starter-parent</artifactId><packaging>pom</packaging>
</project>
  • 这个配置类又继承了dependencies
      1. 各种properties信息:
 <properties><activemq.version>5.16.6</activemq.version>...
</properties>
    • 2.各种依赖管理:
<dependencies>
<dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-amqp</artifactId><version>${activemq.version}</version></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-blueprint</artifactId><version>${activemq.version}</version></dependency>...
</dependencies>
  • starter
    • SpringBoot中常见项目名称,定义了当前项目使用的所有项目目标,已达到减少依赖配置的目的
  • parent
    • 所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
    • spring-boot-starter-parent(2.5.0)与spring-boot-starter-parent(2.4.6)共计57处坐标版本不同
  • 实际开发
    • 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供
    • 如发生坐标错误,再指定version(要小心版本冲突)

1.2 辅助功能

  • 内置服务器,根据spring-boot-starter-web依赖,可以内置一个tomcat服务器
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • 内置了tomcat服务器
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>2.7.14</version><scope>compile</scope>
</dependency>

1.3 SpringBoot程序启动

  • 启动方式
@SpringBootApplication
public class SpringbootQuickStartApplication {public static void main(String[] args) {SpringApplication.run(SpringbootQuickStartApplication.class, args);}
}
  • SpringBoot在创建项目时,采用jar的打包方式
  • SpringBoot的引导类是项目的入口,运行main方法就可以启动项目
  • 将tomcat服务器换为jetty服务器:
  • 在原有的服务器启动类下使用exclusion排除掉Tomcat依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions>
</dependency>
  • 添加Jetty服务器的依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
  • 启动SpringBoot项目

在这里插入图片描述


  • Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换为Jetty

二、 SpringBoot基础配置

2.1 配置文件格式

  • SpringBoot提供了多种属性配置方式(选用不同的配置文件)
  • 配置文件名必须是application开头的,否则可能不生效
    • application.properties
server.port=80
    • application.yml
server:port: 81
    • application.yaml
server:port: 82

注意:port:后一定要加空格

  • 当这三个配置文件都配置时,默认使用顺序是application.properties优先级最高,其次是application.yml,最低优先级是application.yaml,一般写项目时用的配置文件是application.yml

2.1.1 自动提示功能消失解决方案

在使用以.yml.yaml为后缀名的配置文件时,可能会出现自动提示功能消失的问题
解决步骤如下:


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


2.2 yaml

  • YAML (YAML Ain’t Markup Language),一种数据序列化格式
  • 优点:
    • 容易阅读
    • 容易与脚本语言交互
    • 以数据为核心,重数据轻格式
  • YAML文件扩展名
    • .yml(主流)
    • .yaml

2.2.1 yaml语法规则

  • 大小写敏感
  • 属性层级关系使用多行描述,每行结尾使用冒号结束
  • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
  • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
  • #表示注释

2.2.2 yaml数据读取方式

2.2.2.1 使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名…}

lesson: SpringBootserver:port: 80books:name:subject:- Java- 操作系统- 网络
@RestController
@RequestMapping("/books")
public class BookController {@Value("${lesson}")private String lesson;@Value("${books.subject[0]}")private String subject_0;
}

2.2.2.2 封装全部数据到Environment对象

@RestController
@RequestMapping("/books")
public class BookController {@Autowiredprivate Environment environment;@Autowiredprivate Books books;@GetMapping("/{id}")public String getById(@PathVariable Integer id) {System.out.println(lesson);System.out.println(subject_0);System.out.println(environment.getProperty("lesson"));System.out.println(environment.getProperty("books"));System.out.println(books);return "hello,spring boot!";}
}

2.2.2.3 自定义对象封装指定数据

@Component
@ConfigurationProperties(prefix = "books")
public class Books {private String name;private String[] subject[];
}

2.2.2.4 自定义对象封装指定数据警告解决方案

在使用自定义对象封装指定数据时,可能会遇到警告信息:


在这里插入图片描述


  • 在pom.xml文件中添加如下依赖即可:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

2.3 多环境启动

2.3.1 yml文件多环境启动方式

# 设置启用的环境
spring:profiles:active: pro
---
# 开发
spring:profiles: dev
server:port: 80
---
# 生产
spring:profiles: pro
server:port: 81
---
# 测试
spring:profiles: test
server:port: 82

2.3.2 application.properties文件多环境启动

    • 主启动配置文件application.properties
      • spring.profiles.active=dev
    • 环境分类配置文件application-dev.properties
      • server.port=8080
    • 环境分类配置文件application-pro.properties
    • server.port=8081
    • 环境分类配置文件application-test.properties
    • server.port=8082

2.3.3 多环境命令行启动参数设置

  • 带参数启动SpringBoot
java -jar springboot.jar --spring.profiles.active=test
  • 可通过命令行修改参数
  • 修改端口:
java -jar springboot.jar --spring.profiles.active=test --server.port=88
  • 参数加载优先级顺序(从上到下优先级递增)
  • 可参考官网https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config

在这里插入图片描述


2.3.3 多环境开发兼容问题(Maven与boot)

  • Maven中设置多环境属性
    <!--开发环境--><profiles><profile><id>dev</id><properties><prfile.active>dev</prfile.active></properties></profile><!--生产环境--><profile><id>pro</id><properties><prfile.active>pro</prfile.active></properties><activation><activeByDefault>true</activeByDefault></activation></profile><!--测试环境--><profile><id>test</id><properties><prfile.active>test</prfile.active></properties></profile></profiles>
  • SpringBoot中引用Maven属性
# 设置启用的环境
spring:profiles:active: ${prfile.active}---
# 开发
spring:profiles: dev
server:port: 80
---
# 生产
spring:profiles: pro
server:port: 81
---
# 测试
spring:profiles: test
server:port: 82
  • Maven指令执行完毕后,生成了对应的包,其中类参与编译,但是配置文件并没有编译,而是复制到包中
  • 解决思路:对于源码中非java类的操作要求加载Maven对应的属性,解析${}占位符
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>maven-resources-plugin</artifactId><configuration><encoding>UTF-8</encoding><useDefaultDelimiters>true</useDefaultDelimiters></configuration></plugin></plugins></build>

2.4配置文件分类

  • SpringBoot中4级配置文件
    • 1级:file:config/appication.yml(最高)
    • 2级:file:application.yml
    • 3级:classpath:config/application.yml
    • 4级:classpath:application.yml (最低)
  • 作用:
    • 1级与2级留做系统打包后设置通用属性
    • 3级与4级用于系统开发阶段设置统用属性

相关文章:

SpringBoot概述SpringBoot基础配置yml的使用多环境启动

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 SpringBoot简介 一、 SpringBoot概述1.1 起步依赖…...

Python Pandas 处理Excel数据 制图

目录 1、饼状图 2、条形统计图 1、饼状图 import pandas as pd import matplotlib.pyplot as plt import numpy as np #from matplotlib.ticker import MaxNLocator # 解决中文乱码 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[font.sans-serif]Microsoft YaHei …...

如何自己实现一个丝滑的流程图绘制工具(五)bpmn的xml和json互转

背景 因为服务端给的数据并不是xml&#xff0c;而且服务端要拿的数据是json&#xff0c;所以我们只能xml和json互转&#xff0c;来完成和服务端的对接 xml转json import XML from ./config/jsonxml.js/*** xml转为json* param {*} xml*/xmlToJson(xml) {const xotree new X…...

mysql--数据库的操作

数据库&#xff0c;是数据存储的最大单元。 1 创建数据库 create database mydatabase; 每次创建数据库的时候&#xff0c;都会多一个文件夹&#xff0c;关系型数据库是存储在磁盘当中的&#xff0c;所以这时候可以查看新建的数据库 2 指定字符集 MySQL中的字符集转换过程 制…...

kafka--技术文档--架构体系

架构体系 Kafka的架构体系包括以下几个部分&#xff1a; Producer. 消息生产者&#xff0c;就是向Kafka broker发送消息的客户端。Broker. 一台Kafka服务器就是一个Broker。一个集群由多个Broker组成。一个Broker可以容纳多个Topic。Topic. 可以理解为一个队列&#xff0c;一…...

ctfshow web入门 web103-web107

1.web103 和102一样 payload: v2115044383959474e6864434171594473&v3php://filter/writeconvert.base64-decode/resource1.php post v1hex2bin2.web104 值只要一样就可以了 payload: v21 post v113.web105 考查的是$$变量覆盖,die可以带出数据,输出一条消息&#xf…...

前端工程化之模块化

模块化的背景 前端模块化是一种标准&#xff0c;不是实现理解模块化是理解前端工程化的前提前端模块化是前端项目规模化的必然结果 什么是前端模块化? 前端模块化就是将复杂程序根据规范拆分成若干模块&#xff0c;一个模块包括输入和输出。而且模块的内部实现是私有的&…...

文件服务器实现方式汇总

hello&#xff0c;伙伴们&#xff0c;大家好&#xff0c;今天这一期shigen来给大家推荐几款可以一键实现文件浏览器的工具&#xff0c;让你轻松的实现文件服务器和内网的文件传输、预览。 基于node 本次推荐的是http-server&#xff0c; 它的githuab地址是&#xff1a;http-s…...

ChatGPT计算机科学与技术专业的本科毕业论文,2000字。论文查重率低于30%。

目录 摘要 Abstract 绪论 1.1 研究背景 1.2 研究目的和意义 2.1 ChatGPT技术概述 2.2 ChatGPT技术的优缺点分析 2.2.1 优点 2.2.2 缺点 摘要 本论文围绕ChatGPT展开&#xff0c;介绍了该技术的发展历程、特点及应用&#xff0c;分析了该技术的优缺点&#xff0c;提出了…...

【Winform学习笔记(八)】通过委托实现跨窗体传值

通过委托实现跨窗体传值 前言正文1、委托及事件2、通过委托实现跨窗体传值的步骤1.在子窗体中定义委托2.在子窗体中声明一个委托类型的事件3.调用委托类型事件4.在实例化子窗体后&#xff0c;子窗体订阅事件接受方法5.实现具体的事件 3、具体示例4、完整代码5、实现效果 前言 …...

Windows用户如何安装Cpolar

目录 概述 什么是cpolar&#xff1f; cpolar可以用在哪些场景&#xff1f; 1. 注册cpolar帐号 1.1 访问官网站点 2. 下载Windows版本cpolar客户端 2.1 下载并安装 2.2 安装完验证 3. token认证 3.1 将token值保存到默认的配置文件中 3.2 创建一个随机url隧道&#x…...

C++最易读手撸神经网络两隐藏层(任意Nodes每层)梯度下降230820a

这是史上最简单、清晰&#xff0c;最易读的…… C语言编写的 带正向传播、反向传播(Forward ……和Back Propagation&#xff09;……任意Nodes数的人工神经元神经网络……。 大一学生、甚至中学生可以读懂。 适合于&#xff0c;没学过高数的程序员……照猫画虎编写人工智能、…...

机器学习理论笔记(二):数据集划分以及模型选择

文章目录 1 前言2 经验误差与过拟合3 训练集与测试集的划分方法3.1 留出法&#xff08;Hold-out&#xff09;3.2 交叉验证法&#xff08;Cross Validation&#xff09;3.3 自助法&#xff08;Bootstrap&#xff09; 4 调参与最终模型5 结语 1 前言 欢迎来到蓝色是天的机器学习…...

10*1000【2】

知识: -----------金融科技背后的技术---------------- -------------三个数字化趋势 1.数据爆炸&#xff1a;internet of everything&#xff08;iot&#xff09;&#xff1b;实时贡献数据&#xff1b;公有云服务->提供了灵活的计算和存储。 2.由计算能力驱动的&#x…...

“探秘JS加密算法:MD5、Base64、DES/AES、RSA你都知道吗?”

目录 1、什么是JS、JS反爬是什么&#xff1f;JS逆向是什么? 2、JS逆向的大致流程 3、逆向的环境搭建 3.1、安装node.js 3.2、安装js代码调试工具(vscode) 3.3、安装PyExecJs模块 4、JS常见加密算法 4.1、Base64算法 4.2、MD5算法 4.3、DES/AES算法 4.2.2 AES与DES的…...

Spark项目Java和Scala混合打包编译

文章目录 项目结构Pom完整文件编译查看 实际开发用有时候引用自己写的一些java工具类&#xff0c;但是整个项目是scala开发的spark程序&#xff0c;在项目打包时需要考虑到java和scala混合在一起编译。 今天看到之前很久之前写的一些打包编译文章&#xff0c;发现很多地方不太对…...

深度学习处理文本(NLP)

文章目录 引言1. 反向传播1.1 实例流程实现1.2 前向传播1.3 计算损失1.4 反向传播误差1.5 更新权重1.6 迭代1.7 BackPropagation & Adam 代码实例 2. 优化器 -- Adam2.1 Adam解析2.2 代码实例 3. NLP任务4. 神经网络处理文本4.1 step1 字符数值化4.2 step 2 矩阵转化为向量…...

汽车电子笔记之:AUTOSAR方法论及基础概念

目录 1、AUTOSAR方法论 2、AUTOSAR的BSW 2.1、MCAL 2.2、ECU抽象层 2.3、服务层 2.4、复杂驱动 3、AUTOSAR的RTE 4、AUTOSAR的应用层 4.1、SWC 4.2、AUTOSAR的通信 4.3、AUTOSAR软件接口 1、AUTOSAR方法论 AUTOSAR为汽车电子软件系统开发过程定义了一套通用的技术方法…...

鼠标拖拽盒子移动

目录 需求思路代码页面展示【补充】纯js实现 需求 浮动的盒子添加鼠标拖拽功能 思路 给需要拖动的盒子添加鼠标按下事件鼠标按下后获取鼠标点击位置与盒子边缘的距离给 document 添加鼠标移动事件鼠标移动过程中&#xff0c;将盒子的位置进行重新定位侦听 document 鼠标弹起&a…...

AUTOSAR从入门到精通-【应用篇】面向车联网的车辆攻击方法及入侵检测

目录 前言 国内外研究现状 (1)车辆攻击方法的研究 (2)车辆安全防护技术的研究...

别再死记硬背了!用USB的NRZI编码和Bit-Stuffing,搞懂自同步通信的底层逻辑

从NRZI编码到自同步通信&#xff1a;USB协议中的时钟同步艺术 当你在调试USB设备时突然发现数据包丢失&#xff0c;或是试图理解为什么USB仅用两根数据线就能实现高速通信&#xff0c;背后的秘密就藏在NRZI编码和位填充&#xff08;Bit-Stuffing&#xff09;这两个看似简单的技…...

ESP8266透传总失败?手把手教你用Arduino IDE和串口助手搞定Blinker配网(避坑大全)

ESP8266透传配置终极指南&#xff1a;从AT指令到Blinker配网全解析 物联网开发者们&#xff0c;是否曾被ESP8266模块的透传配置折磨得焦头烂额&#xff1f;当你在深夜调试AT指令却只收到一堆乱码时&#xff0c;那种挫败感我深有体会。本文将带你彻底攻克这个物联网入门的第一道…...

告别connect!Qt Creator里用Lambda表达式写信号槽,代码能有多简洁?

Qt Creator中Lambda表达式重构信号槽&#xff1a;极致简洁的现代C实践 在Qt开发中&#xff0c;信号槽机制是GUI编程的核心支柱&#xff0c;但传统connect写法往往导致代码臃肿。当面对大量简单交互逻辑时&#xff0c;频繁声明槽函数和connect调用会让代码库迅速膨胀。Lambda表达…...

基于ssm的精准扶贫管理系统(10061)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

LAV Filters深度解析:开源DirectShow媒体解码器的架构原理与性能优化指南

LAV Filters深度解析&#xff1a;开源DirectShow媒体解码器的架构原理与性能优化指南 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters LAV Filters是一套基于F…...

从游戏到科研:手把手教你设计并运行一个n-back工作记忆测试

从游戏到科研&#xff1a;手把手教你设计并运行一个n-back工作记忆测试 工作记忆是人类认知功能的核心组成部分&#xff0c;它直接影响着我们的学习、推理和问题解决能力。在心理学和认知科学领域&#xff0c;n-back任务已经成为评估工作记忆容量的黄金标准之一。本文将带你从零…...

PostgreSQL列式存储革命:cstore_fdw完整指南与10个性能优化技巧

PostgreSQL列式存储革命&#xff1a;cstore_fdw完整指南与10个性能优化技巧 【免费下载链接】cstore_fdw Columnar storage extension for Postgres built as a foreign data wrapper. Check out https://github.com/citusdata/citus for a modernized columnar storage implem…...

字节跳动(抖音公司)GR3-Fourier V15.0 工业机械臂 | 运动学逆解+离线应急控制 纯C底层开源代码

GR3-Fourier V15.0 底层绝密技术密档 一、六轴机械臂逆运动学完整求解源码 #include "inverse_kinematic.h" #define PI 3.1415926535f #define L1 0.185f #define L2 0.210f //笛卡尔坐标转关节角度逆解 uint8_t IK_Solve(float x,float y,float z,float pitch,fl…...

BiliBiliToolPro:解放双手的B站自动化神器,让你的账号管理从未如此轻松

BiliBiliToolPro&#xff1a;解放双手的B站自动化神器&#xff0c;让你的账号管理从未如此轻松 【免费下载链接】BiliBiliToolPro B 站&#xff08;bilibili&#xff09;自动任务工具&#xff0c;支持docker、青龙、k8s等多种部署方式。全面拥抱AI。敏感肌也能用。 项目地址:…...

备战蓝桥杯国赛【Day 17】

&#x1f4cc; 写在前面&#xff1a;今天的4道题全部来自蓝桥杯真题&#xff0c;&#xff0c;核心考点包括&#xff1a;贪心策略排序、自定义比较器、差分思想、前缀和贪心选择。这些题目看似简单&#xff0c;但暗藏陷阱&#xff0c;是检验"代码实现能力"和"思维…...