2023/07/31
SpringBoot里面的建造者模式@Builder快速创建实例
//使用builder的方式来声明对象,之前我们都是使用set的方式,现在使用builder的当时,必须在EmployeeLoginV0里面写上@Builder注解
//建造者模式
EmployeeLoginVO employeeLoginVO = EmployeeLoginVO.builder()
.id(employee.getId())
.userName(employee.getUsername())
.name(employee.getName())
.token(token)
.build();
通过这种点builder()方法的模式,我们可以快速进行实例的创建,底层原理就是设计模型中的建造者模式。
使用方法:
1.在类的上面使用@Builder 注:提前导入lombok的依赖
2.在创建的时候,直接使用builder方法即可最后用build()收尾
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "员工登录返回的数据格式")
public class EmployeeLoginVO implements Serializable {
@ApiModelProperty("主键值")
private Long id;
@ApiModelProperty("用户名")
private String userName;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("jwt令牌")
private String token;
}
JWT令牌
1.导入JWT依赖
<!-- JWT依赖-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
2.书写工具类
public class JwtUtils{
private static String singKey="Mr.Chen";//签名密钥
private static Long expire = 43200000L;//有效时间(毫秒)
//定义生成方法
//自定义内容(载荷) claims
public static String generateJwt(Map<String,Object> claims){
String jwt=Jwts.builder()
.addClaims(claims)
.signWith(SignatureAlogrithm.HS256,signKey)
.setExpiration(new Date(System.currentTimeMillis()+expire))
.compact();
return jwt;
}
//解析令牌
public static Claims parseJWT(String jwt){
Claims claims=Jwt.parser()
.setSigningKey(signKey)//输入签名
.parseClaimsJws(jwt)//令牌token
.getBody();
return claims;
}
}
3.Controler层调用
全局异常处理器
-
@RestControllerAdvice //表示当前类为全局异常处理器
@RestControllerAdvice = @ControllerAdvice + @ResponseBody
处理异常的方法返回值会转换为json后再响应给前端
-
@ExceptionHandler //指定可以捕获哪种类型的异常进行处理
@ExceptionHandler(Exception.class),如果没有value,默认全部异常都处理
@ConfigurationProperties
1.在实体类上添加@ConfigurationProperties
注解,并通过perfect属性来指定配置参数项的前缀
@Data
@Component//放入ioc容器
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {
//区域
private String endpoint;
//身份ID
private String accessKeyId ;
//身份密钥
private String accessKeySecret ;
//存储空间
private String bucketName;
}
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>