POJO、Java Bean是如何定义的

举报
码农小胖哥 发表于 2022/07/21 23:12:36 2022/07/21
【摘要】 之前介绍过DTO、PO、VO的转换,在日常开发中还有一些类经常被人叫做POJO,还有的人叫它们Java Bean。这些概念都是在特定场景下引入,用来表明它们的特性的。那这些称呼都是啥意思,有啥标准和特征呢?今天就来分享一下这些没用的知识。 POJO POJO是 Plain Old Java Object 的简写,大概意思就...

93ed8e6fab11a3f2c4bd63f750bd7dec.gif

之前介绍过DTO、PO、VO的转换,在日常开发中还有一些类经常被人叫做POJO,还有的人叫它们Java Bean。这些概念都是在特定场景下引入,用来表明它们的特性的。那这些称呼都是啥意思,有啥标准和特征呢?今天就来分享一下这些没用的知识。

POJO

POJOPlain Old Java Object 的简写,大概意思就是“淳朴的Java对象”。这个词是国外一家外包公司的员工创造的。哪些类是POJO类还是有说法的,需要同时满足以下几个条件:

  1. 不实现任何接口的类。

  2. 不继承任何其它类的类。

  3. 不使用任何外部注解的类。

这种类其实就是切断了和外界联系的Java类,下面这个类肯定不是:


   
  1. @Data
  2. public class Dog {
  3.  private String name;
  4.  private Integer age;
  5. }

这个才是POJO


   
  1. public class Dog {
  2.  private String name;
  3.  private Integer age;
  4. }

Java Bean

Java Bean也经常出现在各种技术文献中,也不是随便什么类都能叫做Java Bean的,它需要有以下定义:

  • 有无参数构造。

  • 所有的属性必须是私有属性(private)。

  • 所有的属性必须有公共的(public)的GetterSetter

  • 它必须是可以被序列化的,也就是实现 java.io.Serializable接口。

按照这个定义,POJO类如果想成为Java Bean,需要改造成下面的形式:


   
  1. import java.io.Serializable;
  2. /**
  3.  * @author felord.cn
  4.  */
  5. public class Dog implements Serializable {
  6.     private static final long serialVersionUID = 6723564465081191620L;
  7.     private String name;
  8.     private Integer age;
  9.     public String getName() {
  10.         return name;
  11.     }
  12.     public void setName(String name) {
  13.         this.name = name;
  14.     }
  15.     public Integer getAge() {
  16.         return age;
  17.     }
  18.     public void setAge(Integer age) {
  19.         this.age = age;
  20.     }
  21. }

Spring Bean

既然说到这里了,不妨再说下Spring BeanSpring Bean的要求就低多了,只要这个类(接口)被注入了Spring IoC,那么这个类(接口)都可以被称作一个Spring Bean。至于一个类如何注入Spring IoC,这里就不说了,大家天天都在做。

最后

最后,我们可以得出结论,一个POJO总是孤孤单单的,它不可能成为一个Java Bean或者Spring Bean;但是Java Bean可以同时是一个Spring BeanSpring Bean也可以是一个Java Bean

8305283aabff1173df139b83f0d9c49f.gif

文章来源: felord.blog.csdn.net,作者:码农小胖哥,版权归原作者所有,如需转载,请联系作者。

原文链接:felord.blog.csdn.net/article/details/125903808

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。