重新对transient关键字的认识

本文详细介绍了Java语言中transient关键字的使用方式及注意事项,包括其在序列化过程中的作用、与不同类型的变量间的交互特性,以及如何利用它来保护敏感信息。

在java语言种,transient关键字用于标记在序列化过程中某变量不需要持久化到磁盘里。但是有几点需要注意:

  1. transient只作用于实现Serializable的序列化,不适用于实现Externalizable
  2. 不管有没有transient修饰,静态变量static都不能被序列化(Serializable的序列化)
  3. 经验证阿里的fastjson默认也是不会序列化transient修饰的变量,但是会序列化静态变量

底层原理(引用别的博客的一句总结):

serialization就是把对象的状态存储到硬盘上去,等需要的时候就可以再把它读出来使用。有些时候像银行卡号这些字段是不希望在网络上传输的,transient的作用就是把这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化,意思是transient修饰的age字段,他的生命周期仅仅在内存中,不会被写到磁盘中。

场景应用:

对于系统中需要脱敏的字段用transient修饰最好不过了,在打印日志时大部分习惯使用fastJson序列化。这样像一些敏感的字段就不会打印到日志里(比如:用户明文密码,卡号全明文,cvv等信息)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值