SpringBoot
spring:
IoC:控制反转,降低类和类之间的耦合度
AOP:面向切面编程,在不修改原来代码的前提下增加新的功能
SpringBoot 特点:
1. 开箱即用,简化了 Spring 中的配置,极大的提高开发效率
2. 内置了 web 容器(Tomcat),不需要额外安装
SpringBoot 极大的简化了依赖和配置文件的编写
starter:场景启动器
封装了某个 web 开发场景(功能)所需要的所有依赖和默认配置文件
所有的 starter 列表:
https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/using-boot-build-systems.html#using-boot-starter
spring-boot-starter-parent: 所有的 springboot 都继承自该项目
定义了一组互相兼容的依赖版本号和常用的插件
SpringBoot 自动配置
以前的所有的配置都没有消失,是 SpringBoot 帮咱们配置了
自动配置 如何实现:
1. @SpringBootApplication
2. @EnableAutoConfiguration
3. @Import({AutoConfigurationImportSelector.class})
4. autoconfigure/META-INF/spring.factories
声明了各个 starter 中自动配置类的名称
5. spring 加载自动配置类为 starter 提供一份默认的配置
SpringBoot 自定义配置:
1. application.properties 或者 application.yml
2. 在 config 包下创建配置类,增加 @Configuration 注解
properties 和 yml
properties:
key1.key2.key3=value
yaml:使用缩进保持层级关系,key 和 value 之间必须有空格,字符串可以加 ''
key1:
key2:
key3:空格value
key1.key2.key3=valeu1
key1.key2.key4=value2
key1.key5.key6=value3
key7.key8=value4
key1:
key2:
key3: value1
key4: value2
key5:
key6: value3
key7:
key8: value4
SpringBoot 的打包:
通常 web 开发有三套环境:
开发环境:程序员开发的时候使用的软件和配置
测试环境:程序开发完毕,上线前测试使用的软件和配置
生产(部署)环境:程序发布后使用的软件和配置
多环境配置:
application.yml:切换使用哪个配置文件
application-dev.yml:开发环境的配置
application-test.yml:测试环境的配置
application-prod.yml:生产环境的配置
打包:
1. 点击闪电图表,跳过测试
2. 双击 clean
3. 双击 package
打包结果是一个 jar 文件,内置了 web 容器可以直接启动使用
上传服务器后使用 java -jar xxx.jar 启动程序
@SpringBootApplication:设置程序的入口和提供自动配置
@SpringBootConfiguration:
等价于 @Configuration 用于标识 Spring 中的配置类
@EnableAutoConfiguration:
启用自动配置
@ComponentScan:
扫描和启动类在同一个包下的 spring 注解,并使其生效
前后端分离:
后端:springboot
前端:vue
采用 RESTFul 风格的 API,以 JSON 格式组织数据
GET 查
POST 增
PUT 改
DELETE 删
常见注解:
@Controller:标识的类用于处理请求
@RequestMapping:绑定请求和处理方法
@ResponseBody:直接返回处理后的数据给客户端,默认情况是返回填充数据后的网页给客户端
@RestController:@Controller + @ResponseBody
为当前 Controller 中的所有方法增加 @ResponseBody 注解
@GetMapping:@RequestMapping(value = "", method = RequestMethod.GET)
@PostMapping:@RequestMapping(value = "", method = RequestMethod.POST)
@PutMapping:@RequestMapping(value = "", method = RequestMethod.PUT)
@DeleteMapping:@RequestMapping(value = "", method = RequestMethod.DELETE)
GET /users?page=1&size=10 获取用户
参数以键值对的方式放在 path(请求地址) 后边,多个参数以 & 分隔
SpringMVC 中使用 @RequestParam 注解获取参数
POST /users 添加用户
{"name":"zhangsan", "age":20}
参数以 json 格式组织放在请求体中
SpringMVC 中使用实体类和 @RequestBody 注解获取参数
PUT /users 修改用户信息
{"id":1, "name":"zhangsan", "age":20}
参数以 json 格式组织放在请求体中
SpringMVC 中使用实体类和 @RequestBody 注解获取参数
DELETE /users/1 删除 id=1 的用户
参数放在 path 中
SpringMVC 中使用 {} 和 @PathVariable 注解获取参数
GET /users/1 获取 id=1 的用户信息
GET /users/1/friends?page=1&size=10 获取 id=1 的用户好友列表
登录注册必须使用 POST 方式,参数以 json 格式组织放在请求体中提交给服务器
登录注册必须使用 POST 方式,参数以 json 格式组织放在请求体中提交给服务器
上传文件必须使用 POST 方法,参数以 form 表单格式组织放在请求体中提交给服务器
SpringMVC 中使用 @RequestParm 注解获取参数
使用 Postman 发送请求测试 web 程序很简单,只有一个需要注意的地方:
参数以json格式放入请求体的配置
使用 swagger 测试 web 程序:
-
引入依赖
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency>
-
编写自定义配置类
- 创建 config 包
- 复制 MySwaggerConfigurer.java 类到包内
- 修改 绿色 的地方
- basePackage:controller 包的路径
- 描述信息
- 运行项目
- 浏览器输入:http://localhost:8080/swagger-ui.html
- 选择要测试的 类和方法,Try it out,输入参数,Execute,查看结果
响应数据标准化:
1 创建 ResponseVo 封装响应数据 code:请求处理结果的状态码 message:对 code 的解释说明 data:返回给客户端的具体数据 2. controller 中的请求处理方法都返回 ResponseVo<XXX> 这样客户端就可以根据 code 针对同一个请求的不同响应结果做出不同的反应 eg:登录就有 3 中响应:登录成功,账号不存在,密码错误
通过 lombok 简化实体类的编写:
1. 安装 lombok 插件 2. 引入 lombok 依赖 3. 使用注解生成代码: @Data: 生成 getter && setter @NoArgsConstructor: 生成无参构造方法 @AllArgsConstructor: 生成包含所有参数的构造方法
-