JSR303校验
1. 简介
处理一段业务逻辑,首先要确保数据输入的正确性,所以需要先对数据进行检查,保证数据在语义上的正确性,再根据数据进行下一步的处理。
前端可以通过 js 程序校验数据是否合法,后端同样也需要进行校验。而后端最简单的实现就是直接在业务方法中对数据进行处理,但是不同的业务方法可能会出现同样的校验操作,这样就出现了数据的冗余。为了解决这个情况,JSR 303 出现了。
JSR 303 使用 Bean Validation,即在 Bean 上添加相应的注解,去实现数据校验。这样在执行业务方法前,都会根据注解对数据进行校验,从而减少自定义的校验逻辑,减少代码冗余。
2. springboot中JSR的使用
2.1引入依赖
1 | <dependency> |
分布式事务
Git
git日常使用的小问题
嵌套仓库
如果在一个git仓库中嵌套了一个git仓库,那么被嵌套的git仓库的改动,不能被大git仓库检测到。
解决方案:
可以使用submodule,当引入子仓库时,使用如下命令即可:
1
git submodule add https://github.com/子仓库
作用类似git clone,但是他会在父仓库的下面新建.gitmodules文件,并且包含以下内容
1
2
3[submodule "apps/firstApp"]
path = apps/firstApp
url = https://github.com/muchang/mean-seed-app.git这一段表示子仓库的位置,以及子仓库的远程仓库的地址。
删除子仓库并且commit之后,这个文件和这个子仓库有关的部分就会消失。
本质和第一个方案类似,它会把总仓库内的所有内容拉取下来(包含子仓库):
1
git clone --recursive https://github.com/总仓库
这两种方案可以同时维护两个仓库,字仓库也可以随时拉取更新
删除子仓库
- 卸载子模块
git submodule deinit <submodule_path>
- 删除子模块目录
git rm <submodule_path>
git add
git commit -m "Remove submodule <submodule_path>"
- 卸载子模块
Spring Cloud Gateway
Gateway 简介
Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和 Project Reactor等技术。Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能, 例如:熔断、限流、重试等。
Spring Cloud Gateway 具有如下特性:
- 基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 进行构建;
- 动态路由:能够匹配任何请求属性;
- 可以对路由指定 Predicate(断言)和 Filter(过滤器);
- 集成Hystrix的断路器功能;
- 集成 Spring Cloud 服务发现功能;
- 易于编写的 Predicate(断言)和 Filter(过滤器);
- 请求限流功能;
- 支持路径重写。
相关概念
Spring基础
spring
到底为什么要用 IoC 和 AOP
IoC 解决了以下问题:
- 创建了许多重复对象,造成大量资源浪费;
- 更换实现类需要改动多个地方;
- 创建和配置组件工作繁杂,给组件调用方带来极大不便。
AOP 解决了以下问题:
- 切面逻辑编写繁琐,有多少个业务方法就需要编写多少次。