POJO、Java Bean是如何定義的
在日常開發中還有一些類經常被人叫做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。