在日常开发中还有一些类经常被人叫做POJO,还有的人叫它们Java Bean。这些概念都是在特定场景下引入,用来表明它们的特性的。那这些称呼都是啥意思,有啥标准和特征呢?今天就来分享一下这些没用的知识。
POJO
POJO是 Plain Old Java Object 的简写,大概意思就是“淳朴的Java对象”。这个词是国外一家外包公司的员工创造的。哪些类是POJO类还是有说法的,需要同时满足以下几个条件:
- 不实现任何接口的类。
- 不继承任何其它类的类。
- 不使用任何外部注解的类。
这种类其实就是切断了和外界联系的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)的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;
}
}
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。