【SpringBoot】基础+JSR303数据校验

news2024/11/29 11:56:31

目录

一、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: 处理用户请求

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

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

相关文章

生信初学者教程(二十六):特征和免疫浸润的关联分析

文章目录 介绍加载R包导入数据函数重要特征与免疫细胞的相关热图SLC6A8关联图SLC6A8与特定免疫细胞SLC6A8与其他免疫细胞输出结果总结介绍 在成功获取核心特征集之后,我们计划深入地探究这些特征与免疫浸润细胞之间的关联性,这是因为免疫浸润细胞在癌症的进程中扮演着至关重要…

成都睿明智科技有限公司抖音电商新蓝海的领航者

在当今这个数字化浪潮汹涌的时代,电商行业正以惊人的速度迭代升级,而抖音电商作为新兴势力,更是凭借其庞大的用户基数、精准的算法推荐和高度互动的社区氛围,成为了众多商家竞相追逐的蓝海市场。在这片充满机遇与挑战的海洋中&…

关于Excel将列号由字母改为数字

将Excel的列表由字母改为数字 步骤: 文件-选项-公式-勾选“使用公式”中的“R1C1引用样式(R)”-确定即可 部分步骤图示 设置前的样子 设置后的样子 虽然现在还不清楚在xlwings操作Excel时有什么作用,先留着吧。

内网靶场 | 渗透攻击红队内网域渗透靶场-1(Metasploit)零基础入门到精通,收藏这一篇就够了

“ 和昨天的文章同一套靶场,这次主要使用的是Kali Linux以及Metasploit来打靶场,熟悉一下MSF在内网渗透中的使用,仅供学习参考,大佬勿喷。本期文章靶场来自公众号:渗透攻击红队。” 靶场下载地址:https://…

SpringBoot框架在在线教育系统中的应用

3系统分析 3.1可行性分析 通过对本微服务在线教育系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本微服务在线教育系统采用SSM框架,JAVA作为开…

微调大语言模型——超详细步骤

微调一个语言模型,其实就是在一个已经训练过的模型上,继续用新数据进行训练,帮助模型更好地理解和处理这个新的任务。可以把这个过程想象成教一个已经懂很多道理的人去解决新的问题。 这个过程可以分为五个简单的步骤: 加载预训练…

【目标检测】桥梁表面缺陷检测数据集6710张7类缺陷VOC+YOLO格式

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):6718 标注数量(xml文件个数):6718 标注数量(txt文件个数):6718 标注…

车载测试分享:CANoe工具使用、真实项目实操、UDS诊断测试、ECU刷写测试、物理层测试、数据链路层测试、应用层测试、HIL测试等

FOTA模块中OTA的知识点:1.测试过程中发现哪几类问题? 可能就是一个单键的ecu,比如升了一个门的ecu,他的升了之后就关不上,还有就是升级组合ecu的时候,c屏上不显示进度条。 2.在做ota测试的过程中&#xff…

知识链=知识图谱+大模型+推理-幻觉

最近由华东师大和香港大学联合提出了一种面向大语言模型推理的幻觉缓解方法Chain-of-Knowledge被ACL2024接收为长文主会。 PDF: https://arxiv.org/pdf/2306.06427 最近这两年,诸如GPT-4、LLaMA3等一系列超百亿规模的大语言模型相继提出,这些大模型以其…

AI少女/HS2甜心选择2 仿逆水寒人物卡全合集打包

内含AI少女/甜心选择2 仿逆水寒角色卡全合集打包共6张 内含:白灵雪魅落霞飞雁君临华歌白君临华歌黑平野星罗晚香幽韵 下载地址: https://www.51888w.com/436.html 部分演示图:

P10185 [YDOI R1] Necklace

[YDOI R1] Necklace - 洛谷 因为是方案数求和 我们考虑计算每种珠子单独贡献的方案数有 因为有二项式定理 构造 因为n不取0&#xff0c;便有 时间复杂度 modint qmi code #include <bits/stdc.h>#define INF (1ll<<60) #define eps 1e-6 using namespace std; …

Hive数仓操作(十七)

一、Hive的存储 一、Hive 四种存储格式 在 Hive 中&#xff0c;支持四种主要的数据存储格式&#xff0c;每种格式有其特点和适用场景&#xff0c;不过一般只会使用Text 和 ORC &#xff1a; 1. Text 说明&#xff1a;Hive 的默认存储格式。存储方式&#xff1a;行存储。优点…

Leetcode—763. 划分字母区间【中等】

2024每日刷题&#xff08;175&#xff09; Leetcode—763. 划分字母区间 C实现代码 class Solution { public:vector<int> partitionLabels(string s) {int rightmost[26];int l 0;int r 0;for(int i 0; i < s.length(); i) {rightmost[s[i] - a] i;}vector<…

强化学习笔记之【DDPG算法】

强化学习笔记之【DDPG算法】 文章目录 强化学习笔记之【DDPG算法】前言&#xff1a;原论文伪代码DDPG算法DDPG 中的四个网络代码核心更新公式 前言&#xff1a; 本文为强化学习笔记第二篇&#xff0c;第一篇讲的是Q-learning和DQN 就是因为DDPG引入了Actor-Critic模型&#x…

虚拟电厂可视化:智能能源管理新时代

通过图扑可视化技术&#xff0c;全方位展示虚拟电厂的运行状态&#xff0c;优化能源生产与消耗&#xff0c;提高电网效率和稳定性&#xff0c;实现智能能源管理。

第十一篇——鸡兔同笼:方程这个数学工具为什么很强大?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 数学的伟大思想&#xff1b;不仅仅是我们解决了某一个具体问题&#xff1…

TIBCO Jaspersoft Studio 创建数据源并进行测试

1、连接数据源&#xff1a; 右键Data Adapters &#xff0c;然后新建 根自己的情况&#xff0c;进行创建&#xff0c;这里测试用的是excel表格。 2、新建Jasper Report&#xff0c;然后我们选择刚刚创建的数据源 这样report就建好了&#xff0c;然后我们进行测试。 3、先把不…

永旺梦乐城盛大开业,3300个停车位的智慧运营管理系统上线!

长沙首家&#xff01; 永旺梦乐城 9月12日正式开业&#xff01; 这座融合特色餐饮、娱乐体验的商场&#xff0c; 将为长沙消费者带来&#xff0c; 超越传统商业综合体的全新体验。 开业当日&#xff0c;占地1.3万平方米的永旺超市人声鼎沸&#xff0c;顾客络绎不绝&#x…

使用Java调用OpenAI API并解析响应:详细教程

使用Java调用OpenAI API并解析响应&#xff1a;详细教程 在现代应用程序中&#xff0c;API调用是一个非常常见的任务。本文将通过一个完整的示例&#xff0c;讲解如何使用Java调用OpenAI的ChatGPT API&#xff0c;并通过ObjectMapper处理JSON响应。本文的示例不仅适用于OpenAI…

红米Turbo 3工程固件预览 修复底层 体验原生态系统 默认开启diag端口

红米Turbo 3机型代码:peridot 国外版本:POCO F6 用于以下型号的小米机型:24069RA21C, 24069PC21G, 24069PC21I。搭载1.5K OLED屏、骁龙8s处理器、5000mAh电池+90W快充、5000万像素主摄。 通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2💝💝�…