Spring Boot 2.X 对 web 的支持开发
上章节的 Spring Boot 的入门案例,我们感受到 Spring Boot 简单的配置即可运行项目。
今天了解 Spring Boot 对 web 的支持。
Spring Boot 对 Web 开发的支持很全面,包括开发、测试和部署阶段都做了支持。spring-boot-starter-web
是 Spring Boot 对 Web 开发提供支持的组件,主要包括 RESTful,参数校验、使用 Tomcat 作为内嵌容器器等功能。Spring Boot 2.X 常用注解说明
get: 查询一些信息 post:提交一些需要服务器保存的信息 put: 更新,更新一些用户信息 delete:删除信息 @GetMapping = @RequestMapping(method = RequestMethod.GET) @PostMapping = @RequestMapping(method = RequestMethod.POST) @PutMapping = @RequestMapping(method = RequestMethod.PUT) @DeleteMapping = @RequestMapping(method = RequestMethod.DELETE)eg: @RequestMapping(value="/user",method = RequestMethod.GET)等同于 @GetMapping(value = "/user")如果指定以 Post 的方式去请求,然后使用 Get 的方式(或其他非 post 请求方式)去请求的话,则会报 405 不允许访问的错误。如果不进⾏设置默认两种方式的请求都支持。
Spring Boot 对 JSON的支持以及常用 JSON 注解使用
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。现在大部分的数据交互方式都采用 JSON。 而 Spring Boot 对 JSON 支持很完善,在 Web 层仅需要一个注解即可。
性能:Jackson > FastJson > Gson > Json-lib 同个结构。
jackson处理相关自动(在实体类字段上使用以下注解) 指定字段不返回:@JsonIgnore 指定日期格式:@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8") 空字段不返回:@JsonInclude(Include.NON_NUll) --->对于字符串类型的不返回,int类型的返回0 指定别名: @JsonProperty("XXXX")
Spring Boot 常见 web 中的传递参数方式
① 使用 URL 进行传参:@PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中,如 URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。
@RequestMapping(value="get/{name}", method=RequestMethod.GET) public String get(@PathVariable String name) {return name; } 在浏览器中输入网址:http://localhost:8080/get/Rookie,返回:Rookie,说明 name 值已经成功传入。
②数据校验:Web开发中最常见的就是输入数据的校验。
在 Spring MVC 中有两种方式可以验证输入:Spring 自带的验证框架和利用 JSR 实现。
JSR 是一个规范文档,指定了一整套 API,通过标注给对象属性添加约束。
Hibernate Validator 就是 JSR 规范的具体实现。
Spring Boot 的参数校验依赖于 hibernate-validator 来进行。
使用 Hibernate Validator 校验数据,需要定义一个接收的数据模型,使用注解的形式描述字段校验的 规则。
实体类:@Getter@Setter@ToString@AllArgsConstructor@NoArgsConstructorpublic class Person {@NotEmpty(message="姓名不能为空")private String name;@Max(value = 100, message = "年龄不能大于100岁")@Min(value= 18 ,message= "必须年满18岁!" )private int age;@NotEmpty(message="密码不能为空")@Length(min=6,message="密码长度不能小于6位")private String pass;}请求接口:@RestControllerpublic class PersonController {@RequestMapping("/savePerson")public void savePerson(@Valid Person person, BindingResult result) {System.out.println("Person:"+person);if(result.hasErrors()){List<ObjectError> errorList = result.getAllErrors();errorList.stream().forEach(error-> System.out.println(error.getCode()+"====="+error.getDefaultMessage()));}}}编写测试类:@Testpublic void savePerson() throws Exception {mockMvc.perform(MockMvcRequestBuilders.post("/savePerson").param("name","").param("age","666").param("pass","test"));}测试结果显示: Person:Person(name=, age=666, pass=test) Length=====密码长度不能小于6位 Max=====年龄不能大于100岁 NotEmpty=====姓名不能为空结果显示已触发了校验规则,返回错误信息。在实际开发过程中可对错误信息进行包装,最后返回到前端展示。@Valid:参数前面添加 @Valid 注解,代表此对象使用了参数校验; BindingResult:参数校验的结果会存储在此对象中,可以将错误信息打印出来。 Hibernate Validator 基本上包含了常用的数据校验,包括校验属性是否为空、长度、大小、特定格式等完整的注解自己查表对比。
Spring Boot 常用获取读取配置文件的注解详解
@PropertySource 指定配置文件位置 @ConfigurationProperties 标注该注解的类与配置文件进行绑定,通过设置的前缀,来进行属性设置。代码演示: Author 类:@Component@PropertySource("author.properties")@ConfigurationProperties(prefix = "author")public class Author {//Value("${author.name}")private String name;//Vlue("${author.age}")private int age;}author.properties 配置文件# 配置作者信息author.name=rookieauthor.age=18启动类:@RestController@SpringBootApplicationpublic class ConfigFileDemoApplication {public static void main(String[] args) {SpringApplication.run(ConfigFileDemoApplication.class, args);}@Autowiredprivate Author author;@GetMapping("/author")public String getAuthor(){return "姓名:"+author.getName()+"==========="+"年龄:"+author.getAge();}}
因为我们在 Author 类中已经加了 @Component 注解,因此可以将此注解下的类作为 bean 注入到 Spring 容器中,方便使用。
使用频次最高的就是 @PropertySource & @ConfigurationProperties 配合使用,需要注意的是当在 resources 下再创建 config 文件夹,再将 author.properties 放进 config 文件夹时,需要修改@PropertySource("classpath:config /author.properties") 才可以正确读取配置路径。
当没使用 @ConfigurationProperties(prefix = "author") 注解的时,要想得到配置文件中属性,则需要结合以下注解进行数据源的配置(以上面 Author 类注释掉的部分为例):
@Value("${author.name}")
@Value("${author.age}")也可以直接写在 application.properties 中(不建议这么做,但如果是全局变量提倡这种方法),当写在此文件中时,不需要指明资源文件路劲,只需要指明前缀即可。
@ImportResource 将外部的配置文件加载到程序中来。 如果要让编写的 Spring 配置文件生效,如 beans.xml,可以使用 @ImportResource 注解,将配置文件导入进来。代码演示: Student 类@Getter@Setterpublic class Student {private String name;private String sex;private String phone;}rookie.xml 文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="student" class="com.rookie.model.Student"><property name="name" value="jack"/><property name="sex" value="男人"/><property name="phone" value="132659896254"/></bean></beans>启动类@RestController@SpringBootApplication@ImportResource(locations = "classpath:rookie.xml")public class ConfigFileDemoApplication {public static void main(String[] args) {SpringApplication.run(ConfigFileDemoApplication.class, args);}@Autowiredprivate Student student;@GetMapping("/student")public String getStudent(){return "姓名:"+student.getName()+"==========="+"性别:"+student.getSex()+"==========="+"手机号:"+student.getPhone();}}
Spring Boot 2.X 对 web 的开发支持(二)
转载于:https://www.cnblogs.com/miantiao312/p/11235420.html
相关文章:

Blender建筑可视化技能学习视频教程
Blender建筑可视化技能学习视频教程 chocofur–Blender2021的内部可视化秘密 大小:28G 1920X1080 mp4 语言:英语 信息: 云桥网络 平台获取教程! 了解Blender中完整的内部可视化工作流程是成为一名成功的3D艺术家的关键。向做了十几年的专…

基于DCMTK的DICOM相关程序编写攻略
2008年09月10日 星期三 15:35 基于DCMTK的DICOM相关程序编写攻略 前言: 由于现在的医学影像设备的图像存储和传输正在逐渐向DICOM标准靠拢,在我们进行医学图像处理的过程中,经常需要自己编写和DICOM格式的图像相关的各种程序模块,…

计算机组成考试题及答案,计算机组成测试题一参考答案
计算机组成测试题一参考答案一、填空题(每空1分,共20分)1. 设二进制数X2+100(—0.10101100),用15个二进制位来表示它的浮点数,阶码用5位,其中阶符用2位;尾数用10位,其中符号用2位(2100中的100为…

典型的垃圾收集算法
上一编:《垃圾回收之标记算法》 ,用以确认那些垃圾判定为可以回收。 在确定了哪些垃圾可以被回收后,垃圾收集器要做的事情就是开始进行垃圾回收,但是这里面涉及到一个问题是:如何高效地进行垃圾回收。由于Java虚拟机规…

Oracle10g安装中遇到的错误及解决办法
linux解决xhost: unable to open display实用技巧:在Linux下设置xhost方法步骤 第一步:用root登陆linux,启动vnc服务;第二步:根据vnc起来的端口,设置export DISPLAYlocalhost:1(1表示vnc在第一个…

Result Maps collection already contains value for
启动的时候报错,junit报错一样的 Result Maps collection already contains value for mybatis 查了一下应该是 ***mapper.java和 ***mapper.xml解析有问题了, 不能注入了。 按照***mapper.java 里的方法一个一个到***mapper.xml去查 id 结果发现有一个…

创建三维建筑可视化和虚拟现实的最快和最简单的方法
创建三维建筑可视化和虚拟现实的最快和最简单的方法 时长3小时12分 1280X720 Mkv 语言:英语中文字幕(根据原英文字幕机译更准确)原英文字幕 大小解压后:2.86G 共28小节课程 标题:Skillshare–TWINMOTION实时3d架构可…

刚过国家线计算机考研报哪个好,考研估分刚过了去年国家线,今年上岸还有希望吗?有!...
随着2020年考研成绩的陆续发布,考生们的神经也愈发紧张起来。有很多的同学其实在成绩发布之前,就已经通过网上的答案对自己整体的考试分数有了个大概的估计,于是很多同学乃至是学生家长就想问了,如果估分刚刚过了去年的国家线&…

2022-2028年中国数码摄像机市场投资分析及前景预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国数码摄像机行业市场行业相关概述、中国数码摄像机行业市场行业运行环境、分析了中国数码摄…

Android中怎么使图片显示
android中经常到利用图片,利用图片时我们都是把图片放在drawable-xxx目录下,因为这里就是存储图片的地方,xxx不用理他,就是关于分辨率而已。 楼主在学习android的时候一直尝试把图片在程序中显示,但是一直不成功&#…

webElement.text()获取到内容为空
使用webElement.text()方法获取字符串时,有时候会获取失败--获取到的内容为空 使用 webElement.getAttribute("attributeName"),通过textContent, innerText, innerHTML等属性获取 public String getText(String string){WebDriverWait wait …

【blender教程】从头到尾全流程创建一辆吉普车
【blender教程】从头到尾全流程创建一辆吉普车 持续时间41小时 30分 包括项目文件 1280X720 MP4 语言:英语中文字幕(根据原英文字幕机译更准确)原英文字幕 大小解压后:34.7G 云桥网络 平台huo取 教程 blender:从头到尾打造吉普…

Hat’s Words(字典树)
Hat’s Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11314 Accepted Submission(s): 4041 Problem DescriptionA hat’s word is a word in the dictionary that is the concatenation of exactly two…

遥感计算机分类的基本原理,遥感数字图像的计算机分类
《遥感数字图像的计算机分类》由会员分享,可在线阅读,更多相关《遥感数字图像的计算机分类(3页珍藏版)》请在人人文库网上搜索。1、遥感数字图像的计算机分类一、实验类型综合型二、实验目的与要求1、实验目的掌握非监督分类的过程和方法。2、实验要求(1…

Java垃圾回收之新生代垃圾收集器
分代收集算法 Stop-the-World(停止一切) JVM由于要执行GC而停止了应用程序的执行任何一种GC算法中都会发生多数GC优化通过减少Stop-the-world发生时间来提高程序性能 Safepoint (安全点) 分析过程中对象引用关系不会发生变化的…

用x86的模拟器内核记得安装intel的haxm
Android 模拟器一直以运行速度慢著称, 本文介绍使用 Intel HAXM 技术为 Android 模拟器加速, 使模拟器运行度媲美真机, 彻底解决模拟器运行慢的问题。 Intel HAXM (Hardware Accelerated Execution Manager) 使用基于 Intel(R) Virtualizatio…

我焦躁,并不只是心里承受,还是因为我上面担着。
由于工作任务紧、重,最近很焦躁,终于在今天爆发了。在这次爆发中,隐约的感到并不只是自己的“心理承压”能力的问题。 我爆发后,发现虽然任务如此紧张,但是组长只是“紧张”,工作还是“有条有序”的进行着。…

ue4商城资源 Car Configurator Template 汽车配置器模板
ue4商城资源 Car Configurator Template 汽车配置器模板 ue4商城资源 Car Configurator Template 汽车配置器模板 Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace –Car Configurator Template 4.25 汽车配置器模板 素材大小解压后:0.99G 云桥网络…

Sublime Text 3 常用插件以及安装方法(转)
http://www.cnsecer.com/460.html 安装Sublime Text 3插件的方法: 朋友们,小站活着不容易,全靠广告费养着了,如果本文对你有帮助。麻烦动下手点下页面的广告吧,谢谢! 直接安装 安装Sublime text 2插件很方便…

现代计算机基本工作原理,现代计算机的基本工作原理是
现代计算机的基本工作原理是存储程序控制。“计算机”一般是指“电子计算机”,电子计算机(electronic computer)通称电脑,是现代一种用于高速计算的电子计算机器。可以进行数值计算、逻辑计算,具有存储记忆功能,能够按照程序运行&…

Java垃圾回收之老年代垃圾收集器
1、Serial Old 收集器(-XX: UseSerialOldGC, 标记-整理算法) 单线程收集,进行垃圾收集时,必须暂停所有工作线程简单高效,Client模式下默认的老年代收集器2、Parallel Od收集器(-XX: UseParallelOldGC ,标…

linux中awk下 gsub函数用法
gsub函数则使得在所有正则表达式被匹配的时候都发生替换gsub(regular expression, subsitution string, target string);简称 gsub(r,s,t)一、遇到的问题:问题:echo "a b c 2011-11-22 a:d" | awk $4gsub(/-/,"",$4)为啥…

Maya2022基础入门学习教程
Maya2022基础入门学习教程 Maya 2022 Essential Training Maya2022基础入门学习教程 Maya 2022 Essential Training MP4 |视频:h264,1280x720 |音频:AAC,44.1 KHz,2 Ch 技能水平:初级|流派:电子学习|语言:英语中文字幕(机译&…

简单几何(线段覆盖) POJ 3347 Kadj Squares
题目传送门 题意:告诉每个矩形的边长,它们是紧贴着的,问从上往下看,有几个还能看到。 分析:用网上猥琐的方法,将边长看成左端点到中心的距离,这样可以避免精度问题。然后先求出每个矩形的左右端…

服务器自动post,jquery ajax $.post自动变GET的解决方式(for CI)
环境:CI 3.x windows 2008 phpstudy jquery 1.7.2 apache以往一直用lnmp,这次用windowsapache,遇到了一些问题,记录下来。将本地的文件上传到服务器上以后,有一个将大段html提交到服务器处理的代码,是用…

2022-2028年中国数据中台行业深度调研及投资前景预测报告(全卷)
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国数据中台行业市场行业相关概述、中国数据中台行业市场行业运行环境、分析了中国数据中台行…

为什么一定要杀掉病毒?---帮一位老师解决MyDocument.exe优盘文件夹图标病毒问题...
最近一位大学老师给我抱怨了一个她遇到的烦恼,一直在纠结,生活都被打乱了,事情大概是这样的: 她的优盘里辛辛苦苦弄好备课文件,放在了优盘里,可是每次上课时,就是找不到文件。有时好多文件都被修…

微信小程序开发初探
一、关于微信小程序 1.1 小程序诞生的背景 张小龙说道: (1)一切以用户价值为依归→用户是微信的核心,所以微信中没有很多与客户无关的功能,比如QQ中的乱七八糟一系列东西。 (2)让创造发挥价值→…

ue4商城资源 The Forest v1.5 森林景观场景
ue4商城资源 The Forest v1.5 森林景观场景 ue4商城资源 The Forest v1.5 森林景观场景 ue4商城资源 The Forest v1.5 森林景观场景 Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace –The Forest v1.5 森林景观场景 大小解压后:2.62G 云桥网络 平台…

服务器硬盘如何增加分区,服务器硬盘分区方法是什么?
服务器硬盘,顾名思义,就是服务器上使用的硬盘。如果说服务器是网络数据的核心,那么服务器硬盘就是这个核心的数据仓库,所有的软件和用户数据都存储在这里。用户用久了服务器硬盘就可能会出现空间不足的情况,那么应该如…