• SpringBoot属性说明与RESTful开发


    目录

    属性说明

    parent

    starter

    引导类

    内嵌tomcat

    springboot内置三种服务器

    REST开发

    REST简介

    传统风格资源描述形式

    REST风格描述

    REST优点

    RESTful风格案例

     入门案例小结:

    名称:RequestMapping

    名称:@PathVariable

    @RequstBody @RequestParam  @PathVariable


    属性说明

    parent

    1、开发SpringBoot程序要继承spring-boot-starter-parent

    2、spring-boot-starter-parent中定义了若干个依赖管理

    3、继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突

    4、继承parent的形式,或者使用引入依赖的形式实现效果

    1. 继承的形式
    2. <parent>
    3. <groupId>org.springframework.bootgroupId>
    4. <artifactId>spring-boot-starter-parentartifactId>
    5. <version>2.7.3version>
    6. <relativePath/>
    7. parent>
    8. 导入依赖
    9. <dependencyManagement>
    10. <dependencies>
    11. <dependency>
    12. <groupId>org.springframework.bootgroupId>
    13. <artifactId>spring-boot-dependenciesartifactId>
    14. <version>${spring-boot.version}version>
    15. <type>pomtype>
    16. <scope>importscope>
    17. dependency>
    18. dependencies>
    19. dependencyManagement>

    starter

    starter是springboot中常见项目名称,定义了当前使用的所有依赖坐标,已达到减少依赖配置的目的(每个starter中都包含了许多依赖)

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-webartifactId>
    4. dependency>
    5. |
    6. <dependency>
    7. <groupId>org.springframework.bootgroupId>
    8. <artifactId>spring-boot-starterartifactId>
    9. <version>2.3.7.RELEASEversion>
    10. <scope>compilescope>
    11. dependency>
    12. |
    13. <modelVersion>4.0.0modelVersion>
    14. <groupId>org.springframework.bootgroupId>
    15. <artifactId>spring-boot-starterartifactId>
    16. <version>2.3.7.RELEASEversion>
    17. <name>spring-boot-startername>
    18. <description>Core starter, including auto-configuration support, logging and YAMLdescription>
    19. <url>https://spring.io/projects/spring-booturl>
    • parent所有springboot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),已达到减少依赖冲突的目的。(给下面的依赖使用的)
    • spring-boot-starter-parent各版本间存着诸多坐标版本不同

    实际开发

    使用任意坐标时,仅书写GAV(groupId、artifactId、version)中的G和A,v由springboot提供,除非springboot没有提供版本号,就写上版本号信息。

    小结:

    1、开发springboot程序需要带入坐标时通常都让对应的starter

    2、每个不同的starter根据功能不同,通常包含多个依赖坐标

    3、使用starter可以实现快速配置的效果,达到简化配置的目的

    引导类

    启动方式

     这个@SpringBootApplication  注解包含了许多,包括创建spring容器。

    springboot 的引导类是boot工程的执行入口,运行main方式就可以启动项目

    Springboot工程运行后初始化spring容器,扫描引导类所在包加载bean

    内嵌tomcat

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-webartifactId>
    4. dependency>

     在中spring-boot-starter-web中,ctrl+b跟进

     tomcat中是由很多jar包组成的,jar包是由java语言写的,java靠对象运行,把这对象交给spring管理。把tomcat的执行过程抽取出来变成一个对象,交给spring容器去管理。

    去除tomcat

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-webartifactId>
    4. <exclusions>
    5. <exclusion>
    6. <groupId>org.springframework.bootgroupId>
    7. <artifactId>spring-boot-starter-tomcatartifactId>
    8. exclusion>
    9. exclusions>
    10. dependency>

     运行之后就没有显示了网站相关的了

     使用jetty服务器也可以

    运行jetty服务器 

      

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

    springboot内置三种服务器

    tomcat(默认) apache公司,应用面广负载了若干较重的组件

    jetty 更轻量级,负载性能远不及tomcat

    undertow 负载性能勉强略高tomcat 

    REST开发

    REST简介

    REST(Representational  State   Transfer),表现形式转换

    传统风格资源描述形式

    http://localhost/user/getById?id=1 (查找id=1)

    http:localhost/user/saveUser   (增加)

    REST风格描述

    http://localhost/user/1(查找id=1)

    http://localhost/user (增加)

    REST优点

    • 隐藏资源的访问行为,无法通过地址的得知资源时是何种操作
    • 简化书写

    按照TESt风格访问资源时使用行为动作区分对资源进行了何种操作 

    REST风格描述
    访问路径访问描述请求方式对应的操作
    http://localhost/users查询全部用户信息GET(查询)
    http://localhost/users/1查询指定用户信息GET(查询)
    http://localhost/users添加用户信息POST(新增/保存)
    http://localhost/users修改用户信息PUT(修改/更新)
    http://localhost/users/1删除用户信息DELETE(删除)

    根据REST风格对资源进行访问称为RESTful

    注意:上述行为是约定方式,约定不是规范,可以打破,所以称为REST风格,而不是REST规范描述模块的名称通常使用复数,也就是加s的格式描,表示此类资源,而不是单个资源,例如keys,users,books...

    RESTful风格案例

    1. package com.springboot01.controller;
    2. import com.springboot01.User;
    3. import org.junit.jupiter.api.Test;
    4. import org.springframework.web.bind.annotation.PathVariable;
    5. import org.springframework.web.bind.annotation.RequestMapping;
    6. import org.springframework.web.bind.annotation.RequestMethod;
    7. import org.springframework.web.bind.annotation.RestController;
    8. @RestController
    9. public class BootController {
    10. //RESTful风格/users/{id}才能删到值
    11. @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
    12. //@PathVariable表示从地址栏中取值
    13. public String HelloBoot(@PathVariable Integer id){
    14. System.out.println("delete byId "+id);
    15. return " SpringBoot delete over";
    16. }
    17. @RequestMapping(value = "/users",method = RequestMethod.PUT)
    18. public String UpdateBy( User user){
    19. System.out.println("update user "+user);
    20. return "{'model': user update '} ";
    21. }
    22. }

     无奈的是,通过地址栏访问的是get请求,无法访问到其他请求,所以下载一个postman官网下载

     运行之后启动访问localhost:8080/user/10

     控制台中输出

     

     入门案例小结:

    名称:RequestMapping

    类型:方法注解

    位置:SpringMVC控制方式定义上方

    作用:设置当前控制器方法请求访问路径

    范例:

     

     属性

    value(默认):请求访问路径

    method:http请求动作,标准动作(GET/POST/PUT/DELETE)常用

    名称:@PathVariable

    类型:形参注解

    位置:SpringMVC控制器方法形参定义前面

    作用:板顶路径参数与处理器方法形参关系间的关系,要求路径参数与形参名一一对应

    范例:

    @RequstBody @RequestParam  @PathVariable

    区别

    • @RequestParam用于接收url地址传参或表单传参
    • @RequestBody用于接收json数据
    • @PathVariable用于接收路径参数,使用{参数名称}描述路径参数


    应用

    • 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
    • 如果发送非json格式数据,选用@RequestParam接收请求参数
    • 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值

    RESTful快速开发

    名称:@RestController

    类型:类注解

    位置:基于SpringMVC的TESTful开发控制器类定义上方

    作用:设置当前控制器类为TESTful风格,等同于@Controller+@ResponseBody两个注解组合功能

    ctrl+b查看内部代码

     名称:@GetMapping  @PostMapping  @PutMapping @DeleteMapping

    类型:方法注解

    位置:基于SpringMVC的RESTful开发控制器方法定义上方

    作用:设置当前控制器方法请求方法路径与请求动作,每种对应一个请求动作,例如@GetMapping对应get请求

  • 相关阅读:
    SpringBoot_整合Mybatis-plus
    kernel32.dll下载地址分享,Kernel32.DLL文件丢失的修复指南
    技能大赛试题剖析:文件上传渗透测试
    分布式ID生成方案详解
    关键词搜索1688商品数据接口(标题|主图|SKU|价格|优惠价|掌柜昵称|店铺链接|店铺所在地)
    《数据库系统概论》王珊版课后习题
    在 Python 3 中删除字符串文字前面的“b“字符
    FFplay文档解读-9-解复用器
    【rust】rsut基础:模块的使用一、mod 关键字、mod.rs 文件的含义等
    掌握Pytorch模型 压缩 裁剪与量化
  • 原文地址:https://blog.csdn.net/weixin_60719453/article/details/126836394