POJO、Java Bean是如何定义的

举报
码农小胖哥 发表于 2022/07/21 23:12:36 2022/07/21
5.9k+ 0 0
【摘要】 之前介绍过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类,下面这个类肯定不是:


       @Data
       public class Dog {
        private String name;
        private Integer age;
       }
   
  

这个才是POJO


       public class Dog {
        private String name;
        private Integer age;
       }
   
  

Java Bean

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

  • 有无参数构造。

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

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

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

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


       import java.io.Serializable;
       /**
        * @author felord.cn
        */
       public class Dog implements Serializable {
           private static final long serialVersionUID = 6723564465081191620L;
           private String name;
           private Integer age;
           public String getName() {
               return name;
           }
           public void setName(String name) {
               this.name = name;
           }
           public Integer getAge() {
               return age;
           }
           public void setAge(Integer age) {
               this.age = age;
           }
       }
   
  

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

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

    全部回复

    上滑加载中

    设置昵称

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

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

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