1、在项目中在每个RestApi中第一个参数的@Validated只是给这个接口标记一下
eg:@Validated({update.class})是和实体类上属性的eg:@IdValid(groups ={update.class})对应着,意味着这个api接口的参数要执行这个@IdValid方法的校验,然后api接口的第三个参数BindingResult的作用是:bindResult.hasErrors()判断是否校验通过,校验未通
bingdingResult.getFiledError().getDefaultMessaget()获取在TestEntity的属性设置的自定义的message。
2、使用mybatis-plus的@TableField注解的作用
实体类中有如下属性,通过上面的自动填充属性,我们可以实现
在进行插入操作时对
添加了注解@TableField(fill = FieldFill.INSERT)
的字段进行自动填充。
对添加了注解@TableField(fill = FieldFill.INSERT_UPDATE)
的字段在进行插入和更新时进行自动填充。
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private Date gmtCreat;
/**
* 修改人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long modifierId;
/**
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
/**
* 是否可用
*/
@TableField(fill = FieldFill.INSERT)
private Boolean availableFlag;
实现自动赋值的原理:在项目的config包下新建自动填充处理类使其实现接口MetaObjectHandler并重写其方法
其中方法参数中第一个是前面自动填充所对应的字段,第二个是要自动填充的值。
@TableField字段验证的作用:
常见的验证如下:
@TableField(updateStrategy = FieldStrategy.IGNORED):允许该字段为空(映射表的字段)
@TableFile(exist= false) 表示当前属性不是数据库的字段,但在项目中必须使用,这样在新增等使用bean的时候,mybatis-plus就会忽略这个,不会报错
3、@EnableGlobalMethodSecurity(prePostEnabled=true)注解的作用
作用:开启基于方法的安全认证机制,也就是说在web层的controller启用注解机制的安全确认
@ApiOperation(value = "获取用户列表", httpMethod = "GET")
@GetMapping
@PreAuthorize("hasAuthority('admin')")
//Authentication authentication,当前用户信息
public ResponseEntity<PageResult<UserVO>> list(Authentication authentication, UserDTO userDTO, @Min(1) @RequestParam(defaultValue = "1") Integer pageNo, @Max(100) @Min(5) @RequestParam(defaultValue = "10") Integer pageSize) {
System.out.println(authentication);
PageInfo<UserVO> listByPage = userService.getListByPage(userDTO, pageNo, pageSize);
PageResult<UserVO> result = new PageResult<>();
result.setTotal(listByPage.getTotal());
result.setData(listByPage.getList());
result.setTotalPage(listByPage.getPages());
result.setPageNO(pageNo);
result.setPageSize(pageSize);
return ResponseEntity.ok(result);
}
只有加了@EnableGlobalMethodSecurity(prePostEnabled=true) 那么在上面使用的 @PreAuthorize(“hasAuthority(‘admin’)”)才会生效
4、注解@Order或者接口Ordered的作用是定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响
5、什么是JWT
JWT讲解