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

【SpringBoot】

目录

一、Spring Boot概要

1. SpringBoot介绍

2. SpringBoot优点

3. SpringBoot缺点

4. 时代背景-微服务

二、Spring Boot 核心配置

1. Spring Boot配置文件分类

1.1 application.properties

1.2 application.yml

1.3 小结

2. YAML概述

3. YAML基础语法

3.1 注意事项

3.2 数据格式

4. 读取配置内容

4.1 逐个注入 @Vule(基本数据类型)

4.2 批量注入 @ConfigurationProperties

4.3 对比小结

5. JSR303数据校验

5.1 什么是 JSR303 标准

5.2 JSR303校验注解的使用步骤

6. 多环境切换profile

7. @RequestBody和@RequestMapping


一、Spring Boot概要

1. SpringBoot介绍

        它的设计是为了使您能够尽可能快地启动和运行。它使用 “习惯优于配置” (项目中存在大量的配置,而 Spring Boot 内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。使用 Spring Boot 很容易创建一个独立运行(运行jar,内嵌 Servlet 容器)、准生产强力的基于 Spring 框架的项目,使用 Spring Boot你可以不用或者只需要很少 的 Spring 配置。提供了 J2EE 开发的一站式解决方案。

        2014 年 4 月,Spring Boot 1.0.0 发布。Spring的顶级项目之一(https://spring.io)。

2. SpringBoot优点

        SpringBoot是整合Spring技术栈的一站式框架。

        SpringBoot是简化Spring技术栈的快速开发脚手架。

        Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。

(1)创建独立Spring应用

(2)内嵌web服务器

(3)自动starter依赖,简化构建配置

(4)起步依赖 ,起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM), 定义了对其他库的传递依赖 ,这些东西加在一起即支持某项功能。 简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能

(5)自动配置Spring以及第三方功能

(6)提供生产级别的监控、健康检查及外部化配置

(7)无代码生成、无需编写XML

3. SpringBoot缺点

(1)人称版本帝,迭代快,需要时刻关注变化

(2)封装太深,内部原理复杂,不容易精通

4. 时代背景-微服务

(1)微服务是一种架构风格

(2)一个应用拆分为一组小型服务

(3)每个服务运行在自己的进程内,也就是可独立部署和升级

(4)服务之间使用轻量级HTTP交互

(5)服务围绕业务功能拆分

(6)可以由全自动部署机制独立部署

(7)去中心化,服务自治。服务可以使用不同的语言、不同的存储技术

二、Spring Boot 核心配置

springboot_init_01项目

1. Spring Boot配置文件分类

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

1.1 application.properties

语法结构 :key=value

1.2 application.yml

        语法结构 :key:空格 value (冒号后面必须要有空格

1.3 小结

        SpringBoot提供了2种配置文件类型:properteis和yml/yaml

        默认配置文件名称:application

        在同一级目录入如果三类文件共存,优先级为:properties > yml > yaml

2. YAML概述

        YAML全称是 YAML Ain't Markup Language 。YAML是一种直观的能够被电脑识别的的数据数据序列化格式。

        简洁,以数据为核心

3. YAML基础语法

3.1 注意事项

(1)大小写敏感

(2)数据值前边必须有空格,作为分隔符

(3)使用缩进表示层级关系

(4)缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的空格数目可能不同,导致层次混乱)。

(5)缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

(6)"#"表示注释,从这个字符一直到行尾,都会被解析器忽略

3.2 数据格式

(1)字面量:普通的值  [ 数字,布尔值,字符串  ]

(2)数组:一组按次序排列的值( List、set )

        使用 " - "表示数组每个元素。

(3)对象、Map(键值对)

(4)yaml引用(${key}

4. 读取配置内容

        yaml文件更强大的地方在于,他可以给我们的实体类直接注入匹配值!

        支持方式:

                逐个注入:@Value

                批量注入:(1)@ConfigurationProperties

                                  (2)Environment类

4.1 逐个注入 @Vule(基本数据类型)

        application.yml

4.2 批量注入 @ConfigurationProperties

        @ConfigurationProperties作用:将配置文件中配置的每一个属性的值,映射到这个组件中;告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定

        参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应。

4.3 对比小结

(1)@ConfigurationProperties只需要写一次即可,@Value则需要每个字段都添加

(2)松散绑定:这个什么意思呢? 比如我的yml中写的last-name,这个和lastName是一样的,- 后面跟着的字母默认是大写的。这就是松散绑定。

(3)JSR303数据校验,这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性。

(4)复杂类型封装,yml中可以封装对象,使用value就不支持

结论:

(1)配置yml和配置properties都可以获取到值,强烈推荐 yml;

(2)如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;

(3)如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!

5. JSR303数据校验

        对于 web 服务来说,为防止非法参数对业务造成影响,在 Controller 一定要做参数校验的!大部分情况下,请求参数分为如下两种形式:

(1) POST 、PUT 请求,使用 requestBody 传递参数;

(2) GET 请求,使用 requestParam/PathVariable 传递参数。

5.1 什么是 JSR303 标准

        JSR的全称是Java Specification Requests(Java 规范提案,是指向JCP ( Java Community Process )提出新增一个标准化技术规范的正式请求。

5.2 JSR303校验注解的使用步骤

(1)添加依赖,导入spring-boot-starter-validation启动器

(2)在实体类需要校验的成员字段(Field)上,添加校验注解。

(3)方式一(在Controller控制器的校验参数前,使用@Valid注解开启校验,使用BindingResult 绑定校验结果。)

(4)方式二(Controller统一异常处理

@ControllerAdvice:统一为Controller进行"增强"

@ExceptionHandler : 异常处理

6. 多环境切换profile

        通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务 器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。

        profile功能就是来进行动态配置切换的;

(1)命名语法:

        例如:

                application-环境简称.properties/yml

                application-dev.properties/yml 开发环境

                application-test.properties/yml 测试环境

                application-pro.properties/yml 生产环境

(2)profile激活方式

        配置文件(application.yml):

7. @RequestBody和@RequestMapping

        @ResponseBody: 将方法返回值转换为json并响应给方法的请求者

        @RequestMapping: 处理用户请求

相关文章:

【SpringBoot】

目录 一、Spring Boot概要 1. SpringBoot介绍 2. SpringBoot优点 3. SpringBoot缺点 4. 时代背景-微服务 二、Spring Boot 核心配置 1. Spring Boot配置文件分类 1.1 application.properties 1.2 application.yml 1.3 小结 2. YAML概述 3. YAML基础语法 3.1 注意事…...

Linux操作系统中MongoDB

1、什么是MongoDB 1、非关系型数据库 NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问…...

2、.Net 前端框架:OpenAuth.Net - .Net宣传系列文章

OpenAuth.Net 是一个开源的身份验证框架,由开发者 Yubaolee 创建,它旨在简化 Web 应用和服务的安全授权过程。这个框架以其强大的功能和易用性,为开发人员提供了一种高效的方式来处理用户认证和授权问题。 OpenAuth.Net 的关键特性包括&#…...

unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效、伤害等没有触发

UE5系列文章目录 文章目录 UE5系列文章目录前言一、问题分析二、解决方法1. 添加项目设置碰撞检测通道2.玩家角色碰撞设置3.怪物角色碰撞预设 最终效果 前言 在使用unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效…...

数据权限的设计与实现系列11——前端筛选器组件Everright-filter集成功能完善2

‍ 筛选条件数据类型完善 文本类 筛选器组件给了一个文本类操作的范例,如下: Text: [{label: 等于,en_label: Equal,style: noop},{label: 等于其中之一,en_label: Equal to one of,value: one_of,style: tags},{label: 不等于,en_label: Not equal,v…...

C++ 游戏开发

C游戏开发 C 是一种高效、灵活且功能强大的编程语言,因其性能和控制能力而在游戏开发中被广泛应用。许多著名的游戏引擎,如 Unreal Engine、CryEngine 和 Godot 等,都依赖于 C 进行核心开发。本文将详细介绍 C 在游戏开发中的应用&#xff0…...

【历年CSP-S复赛第一题】暴力解法与正解合集(2019-2022)

P5657 [CSP-S2019] 格雷码P7076 [CSP-S2020] 动物园P7913 [CSP-S 2021] 廊桥分配P8817 [CSP-S 2022] 假期计划 P5657 [CSP-S2019] 格雷码 暴力50分 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) #define int long long #d…...

基于PyQt5和SQLite的数据库操作程序

基于PyQt5和SQLite的数据库操作程序:功能解析 在现代办公和数据处理中,数据库操作是不可或缺的一部分。然而,传统的数据库管理工具往往界面复杂,操作繁琐,对于非专业人士来说存在一定的学习曲线。为了解决这个问题,我们开发了一款基于PyQt5和SQLite的数据库操作程序。该…...

在Ubuntu 20.04中安装CARLA

0. 引言 CARLA (Car Learning to Act) 是一款开源自动驾驶模拟器&#xff0c;其支持自动驾驶系统全管线的开发、训练和验证&#xff08;Development, Training, and Validation of autonomous driving systems&#xff09;。Carla提供了丰富的数字资产&#xff0c;例如城市布局…...

【高中数学/对数/导数】曲线y=ln|x|过坐标原点的两切线方程为?

【问题】 曲线yln|x|过坐标原点的两切线方程为&#xff1f;&#xff08;高考真题&#xff09; 【出处】 《高考数学 函数与导数题型解题研究》P5第8题 中原教研工作室编著 【解答】 yln|x|的图线分两部分&#xff0c;y轴左边的部分是ylnx的镜像 所以知ylnx上切线过原点的…...

Qt CMake

使用 CMake 构建 CMake 是一款用于简化跨不同平台开发项目的构建流程的工具。 CMake 可自动生成构建系统&#xff0c;如 Makefile 和 Visual Studio 项目文件。 CMake 是一个第三方工具&#xff0c;有自己的文档。 本主题介绍如何在 Qt 5 中使用 CMake 3.1.0。 开始使用 CMak…...

制造企业各部门如何参与生产成本控制与管理?

​国内制造业的分量可不轻&#xff0c;从日常生活用品到高端工业设备&#xff0c;中国制造几乎涵盖了各个领域。 不过很多制造业企业在管理方面确实存在一些难题&#xff1a;成本控制不容易&#xff0c;产品质量并不稳定&#xff0c;生产周期也常常较长。 一、中国制造业生产管…...

FireRedTTS - 小红书最新开源AI语音克隆合成系统 免训练一键音频克隆 本地一键整合包下载

小红书技术团队FireRed最近推出了一款名为FireRedTTS的先进语音合成系统&#xff0c;该系统能够基于少量参考音频快速模仿任意音色和说话风格&#xff0c;实现独特的音频内容创造。 FireRedTTS 只需要给定文本和几秒钟参考音频&#xff0c;无需训练&#xff0c;就可模仿任意音色…...

活体检测标签之2.4G有源RFID--SI24R2F+

首先从客户对食品安全和可追溯性的关注切入&#xff0c;引出活体标签这个解决方案。接着分别阐述活体标签在动物养殖和植物产品方面的应用&#xff0c;强调其像 “身份证” 一样记录重要信息&#xff0c;让客户能够了解食品的来源和成长历程&#xff0c;从而放心食用。最后呼吁…...

Web3Auth 如何工作?

Web3Auth 用作钱包基础设施&#xff0c;为去中心化应用程序 (dApp) 和区块链钱包提供增强的灵活性和安全性。在本文档中&#xff0c;我们将探索 Web3Auth 的功能&#xff0c;展示它如何为每个用户和应用程序生成唯一的加密密钥提供程序。 高级架构 Web3Auth SDK 完全存在于用…...

问:SQL中join语法的差异?

在SQL中&#xff0c;JOIN语法用于结合来自两个或多个表的数据。不同类型的JOIN会基于不同的条件来合并表中的数据。以下是几种常见的JOIN及其差异&#xff1a; 假设我们有两个表&#xff1a;employees 和 departments。 employees 表: employee_idnamedepartment_id1Alice10…...

计算机网络各层有哪些协议?计算机网络协议解析:从拟定到实现,全面了解各层协议的作用与区别

在数字化时代&#xff0c;计算机网络无处不在&#xff0c;已经成为不可或缺的一部分。为了让不同设备能够有效地进行通信&#xff0c;网络协议作为一种约定和规则&#xff0c;确保了数据在网络中的可靠传输。今天&#xff0c;我们将深入探讨计算机网络的各层协议&#xff0c;详…...

解决方案:机器学习中,基学习器 跟 弱学习器,有什么区别

文章目录 一、现象二、解决方案 一、现象 在工作中&#xff0c;在机器学习中&#xff0c;有时候会看到基学习器 跟 弱学习器&#xff0c;会容易混淆&#xff0c;所以整理一下 二、解决方案 在机器学习中&#xff0c;“基学习器”&#xff08;Base Learner&#xff09;和“弱…...

【Python】ftfy 使用指南:修复 Unicode 编码问题

ftfy&#xff08;fixes text for you&#xff09;是一个专为修复各种文本编码错误而设计的 Python 工具。它的主要目标是将损坏的 Unicode 文本恢复为正确的 Unicode 格式。ftfy 并非用于处理非 Unicode 编码&#xff0c;而是旨在修复因为编码不一致、解码错误或混合编码导致的…...

第9课-C++String功能的探索

1&#xff1a;C 语言中的字符串 vs C string 类 1.1 C 语言中的字符串 在 C 语言中&#xff0c;字符串本质上是以 \0 结尾的字符数组。C 标准库为此提供了 str 系列函数&#xff0c;如 strlen()、strcpy() 和 strcat() 等。虽然这些函数可以操作字符串&#xff0c;但它们的操…...

基于Hive和Hadoop的保险分析系统

本项目是一个基于大数据技术的保险分析系统&#xff0c;旨在为用户提供全面的汽车保险信息和深入的保险价格分析。系统采用 Hadoop 平台进行大规模数据存储和处理&#xff0c;利用 MapReduce 进行数据分析和处理&#xff0c;通过 Sqoop 实现数据的导入导出&#xff0c;以 Spark…...

国庆节快乐前端(HTML+CSS+JavaScript+BootStrap.min.css)

一、效果展示 二、制作缘由 最近&#xff0c;到了国庆节&#xff0c;自己呆在学校当守校人&#xff0c;太无聊了&#xff0c;顺便做一个小demo帮祖国目前庆生&#xff01;&#xff01;&#xff01; 三、项目目录结构 四、准备工作 (1)新建好对应的文件目录 为了方便&#xff…...

【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化

【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化 阿里 MySQL 命名规范MySQL8 DDL的原子化 阿里 MySQL 命名规范 【强制】表名、字段名必须使用小写字母或数字&#xff0c;禁止出现数字开头&#xff0c;禁止两个下划线中间只出现数字。数据库字段名的修改代价…...

PyTorch源码系列(一)——Optimizer源码详解

目录 1. Optimizer类2. Optimizer概览3. 源码解析3.1 构造方法3.1.1 全局设置情形3.1.2 局部设置情形3.1.3 覆盖测试3.1.4 逐行讲解 3.2 add_param_group3.3 step3.4 zero_grad3.5 self.state3.6 state_dict3.7 load_state_dict 4. SGD Optimizer5. 极简版Optimizer源码6. 自定…...

Java - LeetCode面试经典150题(三)

区间 228. 汇总区间 题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中…...

基于SpringBoot+Vue+MySQL的民宿预订平台

系统展示 用户前台界面 管理员后台界面 商家后台界面 系统背景 随着旅游业的蓬勃发展&#xff0c;民宿作为一种独特的住宿方式&#xff0c;受到了越来越多游客的青睐。然而&#xff0c;传统的民宿预定方式往往存在信息不对称、效率低下等问题&#xff0c;难以满足游客的个性化需…...

Hadoop krb5.conf 配置详解

krb5.conf文件是Kerberos认证系统中的一个关键配置文件&#xff0c;它包含了Kerberos的配置信息&#xff0c;如KDC&#xff08;Key Distribution Centers&#xff09;和Kerberos相关域的管理员服务器位置、当前域和Kerberos应用的默认设置、以及主机名与Kerberos域的映射等。以…...

工程师 - DNS请求过程

DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;是互联网的重要基础设施之一&#xff0c;其主要功能是将人们容易记忆的域名&#xff08;例如 www.example.com&#xff09;转换为计算机能识别的IP地址&#xff08;例如 192.0.2.1&#xff09;&#xff0c;类…...

Solidity智能合约中的事件和日志

1. Solidity 中的事件和日志概述 1.1 什么是事件&#xff1f; 在 Solidity 中&#xff0c;事件&#xff08;Event&#xff09;是一种允许智能合约与外部世界进行通信的机制。通过触发事件&#xff0c;可以记录合约执行中的关键操作&#xff0c;并将这些操作发送到链上。事件的…...

第四十一篇-Docker安装Neo4j

创建目录 mkdir /opt/neo4j-data创建 docker run \ -d --name neo4j \ -p 7474:7474 -p 7687:7687 \ -v /opt/neo4j-data/data:/data \ -v /opt/neo4j-data/logs:/logs \ -v /opt/neo4j-data//conf:/var/lib/neo4j/conf \ -v /opt/neo4j-data/plugins:/plugins \ --env NEO4J…...

建设银行卡在哪里/小红书搜索优化

如今&#xff0c;任何企业对共享企业工具的第一明显需求是&#xff0c;它可以在任何地方、任何设备上被浏览器访问&#xff0c;而且部署的灵活性符合组织政策&#xff0c;无论是安全的公共云还是公司数据中心。 看板工具本身应该具有很高的可配置性&#xff0c;可以将项目和流…...

wordpress网址设置/win10系统优化工具

本篇文章给大家带来的内容是关于SpringBoot 中Thymeleaf模板的详细介绍&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。一、前言Thymeleaf 的出现是为了取代 JSP&#xff0c;虽然 JSP 存在了很长时间&#xff0c;并在 Java W…...

毕设做网站可以用模板吗/兰州seo快速优化报价

Description 给你N个点的无向图 (1 < N < 15,000)&#xff0c;记为&#xff1a;1…N。 图中有M条边 (1 < M < 30,000) &#xff0c;第j条边的长度为&#xff1a; d_j ( 1 < d_j < 1,000,000,000). 现在有 K个询问 (1 < K < 20,000)。 每个询问的…...

wordpress测试301/网络优化工程师前景如何

oracle的dump工具和分析trc文件工具ass.awk之前介绍了oracle的一个hang住时的一个分析工具hanganalyze&#xff0c;这里再引入另外的一个工具&#xff0c;分析系统进程和单个进程的工具1、在能登录数据库时&#xff0c;可以使用如下语句&#xff1a;跟踪进程对象的debug的方法&…...

上海定制网站开发/怎样做网站推广

一开始显示出现问题&#xff0c;js路径不能应用&#xff0c;因为用的是springMVC框架书写&#xff0c;所以有路径的保护和静态引用地址时需要注意的地方 今天进行了最后项目的优化&#xff0c;包括map清洗数据部分的代码和echarts显示的优化 感觉前端显示也很重要&#xff0c;要…...

做网站怎么找图/推广网络营销外包公司

前置定理 1 任给二次型 f∑i,j1naijxixj(aijaji)f \sum_{i,j1}^n a_{ij} x_i x_j \ (a_{ij} a_{ji})f∑i,j1n​aij​xi​xj​ (aij​aji​)&#xff0c;总有正交变换 xPy\boldsymbol{x} \boldsymbol{P} \boldsymbol{y}xPy&#xff0c;使 fff 化为标准形 fλ1y12λ2y22⋯λn…...