SpringBoot属性说明与RESTful开发

目录

属性说明

parent

starter

引导类

内嵌tomcat

springboot内置三种服务器

REST开发

REST简介

传统风格资源描述形式

REST风格描述

REST优点

RESTful风格案例

 入门案例小结:

名称:RequestMapping

名称:@PathVariable

@RequstBody @RequestParam  @PathVariable


属性说明

parent

SpringBoot属性说明与RESTful开发_第1张图片

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

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

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

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

继承的形式

	
		org.springframework.boot
		spring-boot-starter-parent
		2.7.3
		 
	




导入依赖


    
        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

starter

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


            org.springframework.boot
            spring-boot-starter-web
        
  |


   
      org.springframework.boot
      spring-boot-starter
      2.3.7.RELEASE
      compile
    

|

4.0.0
  org.springframework.boot
  spring-boot-starter
  2.3.7.RELEASE
  spring-boot-starter
  Core starter, including auto-configuration support, logging and YAML
  https://spring.io/projects/spring-boot
  • parent所有springboot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),已达到减少依赖冲突的目的。(给下面的依赖使用的)
  • spring-boot-starter-parent各版本间存着诸多坐标版本不同

实际开发

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

小结:

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

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

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

引导类

启动方式

SpringBoot属性说明与RESTful开发_第2张图片

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

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

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

内嵌tomcat

   
            org.springframework.boot
            spring-boot-starter-web
        

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

SpringBoot属性说明与RESTful开发_第3张图片

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

去除tomcat

   
            org.springframework.boot
            spring-boot-starter-web
            
                
                    org.springframework.boot
                    spring-boot-starter-tomcat
                
            
        

SpringBoot属性说明与RESTful开发_第4张图片

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

SpringBoot属性说明与RESTful开发_第5张图片

 使用jetty服务器也可以

SpringBoot属性说明与RESTful开发_第6张图片

运行jetty服务器 

SpringBoot属性说明与RESTful开发_第7张图片

  

SpringBoot属性说明与RESTful开发_第8张图片

 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风格案例

SpringBoot属性说明与RESTful开发_第9张图片

package com.springboot01.controller;


import com.springboot01.User;
import org.junit.jupiter.api.Test;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController

public class BootController {

            //RESTful风格/users/{id}才能删到值
        @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
        //@PathVariable表示从地址栏中取值

        public String HelloBoot(@PathVariable Integer id){
            System.out.println("delete byId "+id);
            return " SpringBoot   delete over";
        }

    
    @RequestMapping(value = "/users",method = RequestMethod.PUT)

    public String UpdateBy( User user){
        System.out.println("update user "+user);
        return "{'model': user update '} ";
    }

}

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

SpringBoot属性说明与RESTful开发_第10张图片

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

SpringBoot属性说明与RESTful开发_第11张图片

SpringBoot属性说明与RESTful开发_第12张图片

 控制台中输出

SpringBoot属性说明与RESTful开发_第13张图片

 SpringBoot属性说明与RESTful开发_第14张图片

 入门案例小结:

名称:RequestMapping

类型:方法注解

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

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

范例:

 SpringBoot属性说明与RESTful开发_第15张图片

 属性

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

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

名称:@PathVariable

类型:形参注解

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

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

范例:

SpringBoot属性说明与RESTful开发_第16张图片

@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查看内部代码

SpringBoot属性说明与RESTful开发_第17张图片

 名称:@GetMapping  @PostMapping  @PutMapping @DeleteMapping

类型:方法注解

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

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

SpringBoot属性说明与RESTful开发_第18张图片

你可能感兴趣的:(SpringBoot,java,spring,boot,spring)