专栏首页关忆北.NullException、Token的作用、Mapstruct用法

NullException、Token的作用、Mapstruct用法

1.Java中的空指针异常

空指针的出现:

  1. 从空对象中获取 / 修改值,如从数据库获取数据赋值给对象,再从当前对象中取值。
  2. 访问或修改空对象的字段
  3. 取Null的长度(如数组)
  4. 将Null抛出

规避空指针的出现:

  1. 在使用对象时,确保将其初始化
  2. 声名引用变量时,必须从对象请求方法或字段之前,做判空处理
参考文章:NullException

2.Token的作用

token主要用在会话管理,防止表单提交和防止CSRF攻击,同时token支持跨域访问,无状态,不存储session信息。

基于JWT的Token认证机制

一个JWT实际上就是一个字符串,它由三部分组成:头部、载荷与签名。将这三段信息文本用.链接一起就构成了Jwt字符串。

  • 头部主要包含声明类型如jwt和声明加密算法
{
  "typ": "JWT",
  "alg": "HS256"
}
  • 载荷(Payload),存储有效信息,并将其Base64加密
{
  "password": "1234567890",
  "name": "John Doe",
  "admin": true
}
  • 签名(Signature)对进行Base64加密后的头部和Payload进行加盐secret组合加密,secret存储在服务端。

通过对token的解析可以获得有效数据。

Mapstruct用法初步学习

使用场景:将DTO转换成VO,DTO转成Entity等各类对象相互转换 官方介绍:

Both types are rather similar, only the seat count attributes have different
names and the type attribute is of a special enum type in the Car class
but is a plain string in the DTO.
@Data
@Accessors(chain = true)
public class User {
    private Long id;
    private String username;
    private String password;
    private Integer sex;
    private LocalDate birthday;
    private LocalDateTime createTime; 
    private String config; 
  	private String test; 
}

@Data
@Accessors(chain = true)
public class UserVo {
    private Long id;
    private String username;
    private String password;
    private Integer gender;
    private LocalDate birthday;
    private String createTime;
    private List<UserConfig> config;
	  private String test; // 测试字段
    @Data
    public static class UserConfig {
        private String field1;
        private Integer field2;
    }
}

同等解决方案:BeanUtils工具类的copyProperty以及调用getter/setter方法进行属性赋值 MapStruct优点:

  1. 通过使用普通方法调用而不是反射来快速执行
  2. 编译时类型安全性:只能映射相互映射的对象和属性,不能将订单实体意外映射到客户DTO

source:代表转换的源 target:代表转换的目标

MapStruct:参考文章

使用MapStruct无法遵循isXXX命名规则,官方认为这个不是bug也不会为此做出改变。

MapStruct的Github关于无法遵循isXXX命名规则的 Issues

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42313773复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • phpfpm的作用和用法

    PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,对于PHP 5.3.3之前的php来...

    砸漏
  • XmlRootElement的作用和用法

    java攻城狮
  • api网关校验token添加新认证 Token在api网关当中的作用

    api网关的实际作用是验证访问者的身份,以及提供快捷的登录微服务架构的渠道。 Token也是一种身份验证形式,基于 Token的特点,用户在使用服务器登录系统之...

    用户8715145
  • tensorflow的基本用法——dropout的作用

    本文主要是介绍tensorflow中dropout的作用,dropout主要是用来防止过拟合,即提供模型的泛化能力。

    Tyan
  • Ansible和Docker的作用和用法

    在 Docker 和 Ansible 的技术社区内存在着很多好玩的东西,我希望在你阅读完这篇文章后也能像我们一样热爱它们。当然,你也会收获一些实践知识,那就是如...

    星哥玩云
  • C/C++头文件的作用和用法

    示例代码编译运行环境:Windows 64bits+VS2017+Debug+Win32。

    Dabelv
  • Mybatis中@Param的用法和作用详解

    用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中

    赵哥窟
  • Prometheus关于with和by的作用及用法原创

    通常如上两个函数都配合sum()函数一同出现,by用于聚合我们关心的列,而without则可以直接理解为by的相反用法。

    二丫讲梵
  • 简述python中的@staticmethod作用及用法

    关于@staticmethod,这里抛开修饰器的概念不谈,只简单谈它的作用和用法。 staticmethod用于修饰类中的方法,使其可以在不创建类实例的情况...

    KevinBruce
  • pcntl_exec函数的作用以及用法

    我们会看到经过pcntl_exec函数,test.php 里面的代码也执行,这其实就是pcntl_exec的作用,用来执行一个程序

    北溟有鱼QAQ
  • Vue-router各个属性的作用与用法

    vue-router是vue单页面开发的路由,就是决定页面跳转的!<router-link> 组件支持用户在具体有路由功能的应用中(点击)导航。通过to属性指定...

    前端老道
  • CSS里:focus-within 的作用和用法

    Jerry Wang
  • 以太坊Token通证或者代币的真正作用是什么?

    上一篇文章以太坊(Ethereum)与以太(Ether)中,你应该很好地理解以太坊是如何构建以太坊应用程序网络的,这些应用程序需要一个名为Ether的加密货币来...

    笔阁
  • 谈谈em的用法和在创建移动页面的作用

    首先;我们需要知道的是,对于在移动设备上运行的网址或应用程序来说,像素不能作为尺寸单位。正确的做法是根据游览器来使用ems或百分比作为单位。

    用户5997198
  • H5 中 bordercolorlight 属性的用法及作用

    今天在复习 H5 页面设计表格,发现<table>标签中添加了新的属性:bordercolorlight。我们来看看有什么作用。

    白鹿第一帅
  • H5 中 bordercolorlight 属性的用法及作用

    今天在复习 H5 页面设计表格,发现<table>标签中添加了新的属性:bordercolorlight。我们来看看有什么作用。

    白鹿第一帅
  • C++中this指针的作用以及用法详解

    当我们在类中定义了一个变量,同时又在类成员函数中定义了同一个变量时,也就是变量名重复时,但是我们要想使用类中的定义的变量,此时就需要this指针了。

    全栈程序员站长
  • Python函数return的用法和作用、以及帮助函数

    前面的函数学习之后我们发现,函数不被调用是不会直接执行的。我们在之前的函数调用之后发现运行的结果都是函数体内print()打印出来的结果,但是有时候为了方便函数...

    村长python

扫码关注腾讯云开发者

领取腾讯云代金券