深圳幻海软件技术有限公司 欢迎您!

POJO、Java Bean是如何定义的

2023-02-28

在日常开发中还有一些类经常被人叫做POJO,还有的人叫它们JavaBean。这些概念都是在特定场景下引入,用来表明它们的特性的。那这些称呼都是啥意思,有啥标准和特征呢?今天就来分享一下这些没用的知识。POJOPOJO是 PlainOldJavaObject 的简写,大概意思就是“

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

POJO

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

  • 不实现任何接口的类。
  • 不继承任何其它类的类。
  • 不使用任何外部注解的类。

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

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

这个才是POJO:

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

Java Bean

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

  • 有无参数构造。
  • 所有的属性必须是私有属性(private)。
  • 所有的属性必须有公共的(public​)的Getter和Setter。
  • 它必须是可以被序列化的,也就是实现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;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

Spring Bean

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

最后

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