Day01 后端环境搭建
lombok插件
通过lombok插件。
- @Data
可以使用@Data、@Getter、@Setter等注解的形式,来对一个Java Bean(具有Getter,Setter方法的对象)实现快速的初始化。 - @Slf4j
可以以注解的形式,自动化日志变量,通过添加@Slf4j(simple logging Facade for Java)生成log日志变量,通过log变量打印日志信息。使用@Slf4j依赖logback插件(Slf4j的实现)。lombok只是提供注解的形式自动化创建日志变量。 - @Builder
为目标类生成构建器相关的一些api。
POJO
POJO:(Plain Old Java Object)持久化对象,目前理解为java Bean。
在POJO的基础上,将对象分为以下几类(都是Java Bean),并放在POJO包中。
- Entity:实体,和数据库中的表对应
- DTO:数据传输对象,用于程序中各层之间传递数据
- VO:视图对象,为前端展示数据提供的对象
git版本控制
- .gitignore 文件将项目无关文件,加入忽略列表中
- idea的git管理使用
- git的相关设置
git config user.name等信息
- git本地config设置中的user,email的信息,是本地git提交记录的身份标识,每次提交都会附加这些信息(和Github账户无关),用来标识代码作者。
Git克隆或是Push等操作时,需要进行关联的Github账户认证,可以用如下的一些方式完成认证:
- 通过credential.helper缓存或保存远程仓库的认证信息。
- HTTPS协议认证
- SSH协议认证(ssh多账户配置)
数据库
执行sql脚本文件,生成数据库。
前后端联调测试
- Step Over: 单步调试,逐行执行代码
- Step into: 步入,当前行有方法,进入方法体内部
- Step Out:执行完子函数余下部分,返回到上一层函数
- run to cursor:一直执行,知道光标处停止;用于循环内部时,点击一次执行一个循环
- Resume :一直执行到下一个调式断点
Idea中ctrl + alt +鼠标左键跳转对应具体实现类
JWT(java web token令牌)
使用JwtUtil包,生成toke,用于用户身份认证。
JwtUtil.createJWT(key,有效时间,存有用户数据的键值对)
SpringBoot
-
使用SpringBoot中的@COnfigurationProperties来配置属性类,将配置文件中的属性绑定Spring的Bean上。
SpringBoot默认使用全局的配置文件:application.propreties/application.yml
。一般在resources
目录下。
SpringBoot配置文件 -
全局异常处理
-
对象实例化:使用@Builder注解,然后类.builder().属性(赋值).build()生成;
-
对象属性拷贝BeanUtil包:
BeanUtils.coypProperties(srcObj,tgtObj)
-
拦截器类
nginx反向代理
将前端发送的动态请求转发到后端服务器。
- 缓存:提高访问速度,通过缓存机制,缓存访问后端的数据,再次访问同样的数据时,使用缓存提高速度
- 负载均衡:将大量请求按一定策略均衡分配给集群中的服务器。集群
- 保证后端服务安全:起到网关作用
反向代理基本配置
server{listen 80;#80端口监听请求server_name localhost;# 服务器名location /api/{proxy_pass http://localhost:8080/admin/;#反向代理}
}
负载均衡配置
upstream webservers{ #配置后端服务器ip地址portserver 192.168.100.128:8080;server 192.168.100.129:8080;
}server{listen 80;server_name localhost;location /api/{proxy_pass http://webservers/admin/;#负载均衡}
}
负载均衡策略
- 轮询:默认方式
- weight:权重方式,默认为1,权重越高,分配客户端请求越多
- ip_hash:依据ip分配,用户固定访问一个后端服务
- least_conn:依据最少连接方式,把请求优先分配给连接数少的后端服务
- url_hash:依据url分配方式,相同url被分配到同一个后端服务
- fair:响应时间方式,响应时间越短的服务会被优先分配
密码加密
密码明文存储不安全,使用加密方式进行明文进行加密。
使用md5加密。(不可逆,只能加密,不能解密,密码检查,对提交的明文密码加密后和数据库已加密的密码比对来判断密码是否正确)。
使用DigestUtil包的加密工具进行加密。
DigestUtils.md5DigestAsHex(pwd.getBytes())
导入接口文档
使用apifox导入接口文档(yapi json格式)
Swagger使用
接口测试的方式
- postman测试后端编写的接口。
- 使用swagger
swagger介绍
使用swagger只需要按照其规范定义接口以及接口相关信息,就哭做到生成接口文档,以及在线接口调试页面。
使用Knife4j(为Java MVC框架继承Swagger生成Api文档的增强解决方案)依赖。
使用
- 在maven的pom.xml中导入坐标信息
- 配置类中加入knife4j相关配置。(WebMvcConfiguration中docket方法?在里面指定生成接口需要扫描的包等信息)
- 设置静态资源映射,否则接口文档页面无法访问(也是WebMvcConfiguration类中)
Yapi设计阶段工具,用于管理维护接口。
Swagger开发阶段使用的框架,用于后端接口测试。
Swagger注解
- @Api:类上,标识对类说明Controller
- @ApiModel:类上,用于Entity,DTO,VO说明
- @APiModelProperty:属性,描述属性信息
- @ApiOperation:方法,例如Controller的方法,说明方法用途作用
Swagger token
用于使用SpringBoot拦截器,对请求进行拦截,请求头携带正确有效的token才能进行api接口访问。
因此为了完成接口测试,在swagger的接口文档中页面下的文档管理/全局参数设置下进行token设置。
ThreadLocal
为了完成创建新员工时,得到创建者员工的id信息,可以在jwt认证机制的过程中获取。
用户发起的每次请求,对应一个单独的线程,每次请求,都是不同线程。
- ThreadLocal是线程Thread的局部变量。为每个线程提供单独一份的存储空间(正常线程共享空间),具有线程隔离效果,只有线程自身内才能获取对应的值,线程外访问不了。
通过ThreadLocal可以实现在创建新员工时,获得创建者员工的id信息。 - 拦截器拦截请求,获取请求token信息,解析token获取请求者(创建者员工)id信息,存入ThreadLocal
- 通过拦截器后,请求访问对应/save接口方法,在接口方法里获取ThreadLocal的创建者员工id,设置持久化。
ThreadLocal常用方法
public void set(T value)设置当前线程的线程局部变量值
public T get() 返回当前线程所对应的线程局部变量值
public void remove() 移除当前线程的线程局部变量