目录
@RequstBody @RequestParam @PathVariable
1、开发SpringBoot程序要继承spring-boot-starter-parent
2、spring-boot-starter-parent中定义了若干个依赖管理
3、继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
4、继承parent的形式,或者使用引入依赖的形式实现效果
- 继承的形式
- <parent>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-parentartifactId>
- <version>2.7.3version>
- <relativePath/>
- parent>
-
-
-
-
- 导入依赖
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-dependenciesartifactId>
- <version>${spring-boot.version}version>
- <type>pomtype>
- <scope>importscope>
- dependency>
- dependencies>
- dependencyManagement>
starter是springboot中常见项目名称,定义了当前使用的所有依赖坐标,已达到减少依赖配置的目的(每个starter中都包含了许多依赖)
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-webartifactId>
- dependency>
- |
-
-
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starterartifactId>
- <version>2.3.7.RELEASEversion>
- <scope>compilescope>
- dependency>
-
- |
-
- <modelVersion>4.0.0modelVersion>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starterartifactId>
- <version>2.3.7.RELEASEversion>
- <name>spring-boot-startername>
- <description>Core starter, including auto-configuration support, logging and YAMLdescription>
- <url>https://spring.io/projects/spring-booturl>
实际开发
使用任意坐标时,仅书写GAV(groupId、artifactId、version)中的G和A,v由springboot提供,除非springboot没有提供版本号,就写上版本号信息。
小结:
1、开发springboot程序需要带入坐标时通常都让对应的starter
2、每个不同的starter根据功能不同,通常包含多个依赖坐标
3、使用starter可以实现快速配置的效果,达到简化配置的目的
启动方式
这个@SpringBootApplication 注解包含了许多,包括创建spring容器。
springboot 的引导类是boot工程的执行入口,运行main方式就可以启动项目
Springboot工程运行后初始化spring容器,扫描引导类所在包加载bean
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-webartifactId>
- dependency>
在中spring-boot-starter-web中,ctrl+b跟进
tomcat中是由很多jar包组成的,jar包是由java语言写的,java靠对象运行,把这对象交给spring管理。把tomcat的执行过程抽取出来变成一个对象,交给spring容器去管理。
去除tomcat
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-webartifactId>
- <exclusions>
- <exclusion>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-tomcatartifactId>
- exclusion>
- exclusions>
- dependency>
运行之后就没有显示了网站相关的了
使用jetty服务器也可以
运行jetty服务器
Jetty比tomcat更轻量,可扩展性更强(相对于tomcat),谷歌应用引擎(GAE)已经全面切换为jetty
tomcat(默认) apache公司,应用面广负载了若干较重的组件
jetty 更轻量级,负载性能远不及tomcat
undertow 负载性能勉强略高tomcat
REST(Representational State Transfer),表现形式转换
http://localhost/user/getById?id=1 (查找id=1)
http:localhost/user/saveUser (增加)
http://localhost/user/1(查找id=1)
http://localhost/user (增加)
按照TESt风格访问资源时使用行为动作区分对资源进行了何种操作
访问路径 | 访问描述 | 请求方式对应的操作 |
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...
- 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官网下载
运行之后启动访问localhost:8080/user/10
控制台中输出
类型:方法注解
位置:SpringMVC控制方式定义上方
作用:设置当前控制器方法请求访问路径
范例:
属性
value(默认):请求访问路径
method:http请求动作,标准动作(GET/POST/PUT/DELETE)常用
类型:形参注解
位置:SpringMVC控制器方法形参定义前面
作用:板顶路径参数与处理器方法形参关系间的关系,要求路径参数与形参名一一对应
范例:
区别
应用
RESTful快速开发
名称:@RestController
类型:类注解
位置:基于SpringMVC的TESTful开发控制器类定义上方
作用:设置当前控制器类为TESTful风格,等同于@Controller+@ResponseBody两个注解组合功能
ctrl+b查看内部代码
名称:@GetMapping @PostMapping @PutMapping @DeleteMapping
类型:方法注解
位置:基于SpringMVC的RESTful开发控制器方法定义上方
作用:设置当前控制器方法请求方法路径与请求动作,每种对应一个请求动作,例如@GetMapping对应get请求