SpringBoot的建造者模式@Builder快速创建实例


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>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值