java 的transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。

transient使用小结

1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。

2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。

3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。

用法:

@transient 就是在给某个javabean上需要添加个属性,但是这个属性你又不希望给存到数据库中去,仅仅是做个临时变量,用一下。不修改已经存在数据库的数据的数据结构。

那么这个注解就可以一用。

只要在你准备添加的临时属性上添加这个注解,然后getter和setter自动完成一下,就可以啦。

@Document(collection = "streams")

public class Stream implements Serializable,Cloneable {

private static final long serialVersionUID = 1L;

@Transient

private boolean alarmsettingsActive = false;

xxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxx

}

@Document(collection = "streams")

public class Stream implements Serializable,Cloneable {

private static final long serialVersionUID = 1L;

@Transient

private boolean alarmsettingsActive = false;

xxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxx

}

上面的是个人理解,下面呢就是详细说说。

1. transient的作用

我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。

然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应的变量就可以加上transient关键字。换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。

总之,java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。

2. transient使用小结

1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。

2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。

3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。

java字段不序列化注解_@Transient注解的使用(不被序列化和作为临时变量存储)...相关推荐

  1. java.beans.transient_@Transient注解的使用(不被序列化和作为临时变量存储)

    java 的transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中. trans ...

  2. java注释和注解_注释注解JAVA注解

    发一下牢骚和主题无关: package anno; import java.lang.annotation.Retention; import java.lang.annotation.Retenti ...

  3. 注解(7)_元注解_元注解的概念_@Retention_@Target_@Documented_@Inherited

    元注解的概念 元注解是用于修饰其他注解的注解. (1)元注解本身也是注解. (2)元注解是用来修饰别的注解的. JDK5.0提供了四种元注解: @Retention @Target @Document ...

  4. 自定义检验注解_多注解自定义参数校验

    好久直接更新了单个注解参数校验以后.偷懒了好久,今天就把多个注解自定义的参数校验写了一下,思路是一样的,只是一个注解包含的字段把它分解成了多个注解,类似于java-valid自带的不同功能的校验注解一 ...

  5. 注解_自定义注解_元注解

    * 元注解:用于描述注解的注解 * @Target:描述注解能够作用的位置* ElementType取值:* TYPE:可以作用于类上* METHOD:可以作用于方法上* FIELD:可以作用于成员变 ...

  6. 注解_自定义注解_格式本质

    * 自定义注解* 格式:元注解public @interface 注解名称{属性列表;}* 本质:注解本质上就是一个接口,该接口默认继承Annotation接口* public interface M ...

  7. java spring多数据源配置文件_基于注解实现SpringBoot多数据源配置

    1.功能介绍 在实际的开发中,同一个项目中使用多个数据源是很常见的场景.最近在学习的过程中使用注解的方式实现了一个Springboot项目多数据源的功能.具体实现方式如下. 2.在applicatio ...

  8. java bean value注解_@Value 注解详解

    @Value 注解可以用来将外部的值动态注入到 Bean 中,在 @Value 注解中,可以使用 ${} 或 #{}.${} 与 #{} 的区别如下: (1)@Value("${}" ...

  9. java中全局变量注解_自定义注解,前端获取token值的时候,全局变量返回后端用注解注入,以便以其他业务层使用...

    @Target(ElementType.PARAMETER)//@Target 说明了Annotation所修饰的对象范围,PARAMETER:用于描述参数 @Retention(RetentionP ...

最新文章

  1. Enterprise Architect 7 入门教程 1
  2. MPB:北林张静等-丛枝菌根真菌(AMF)孢子、菌丝密度及侵染率定量测定方法
  3. 声场噪音测试软件,粉红噪声:测试声场频率的标准信号源(转载)
  4. JRE、JVM和JDK
  5. 168. Leetcode 134. 加油站 (贪心算法-模拟题目)
  6. python sort 部分元素_Python 简单排序算法-选择、冒泡、插入排序实现
  7. mysql for update死锁_Mysql 数据库死锁过程分析(select for update)
  8. Linux下把U盘格式化为fat32
  9. 3.修改和编译XposedBridge.jar 和 api.jar
  10. Java中的网络编程
  11. ROS | 机器人操作系统简介
  12. 华为手机灵敏度设置_和平精英灵敏度怎么调最稳华为手机?华为二指灵敏度调整设置一览[多图]...
  13. 电脑qq如何发送html消息,电脑QQ如何设置按Enter键发送消息
  14. 南极大冒险/零下八度/南极物语/8只雪橇犬
  15. linux core文件截断,Coredump被截断了
  16. termux内网穿透-ngrok
  17. Win10自带的录屏功能怎么用?
  18. 七月算法课程《python爬虫》第三课: 爬虫基础知识与简易爬虫实现
  19. java编译器 jit_JIT编译器
  20. 希腊字母,阿拉伯字母的读音表

热门文章

  1. Windows Server 2008 的十四大最新功能特性技术总结
  2. 为什么浏览器不能跨域
  3. 《Flex 第一步》
  4. 强大的SqlCacheDependency
  5. 详解公用表表达式(CTE)
  6. 浅析php-fpm静态和动态执行方式的比较
  7. python算法与数据结构-归并排序算法
  8. 使用Jupyter notebook,为什么按下ctrl+enter后,没有输出,也没有报错,而是一直出现“*”呢?
  9. SocketLog-微信调试、API调试和AJAX的调试的工具,能将日志通过WebSocket输出到Chrome浏览器的console中
  10. mysql备份命令和还原命令_mysql数据备份和还原命令