POJO、Java Bean是如何定义的

开发 前端
一个POJO总是孤孤单单的,它不可能成为一个Java Bean或者Spring Bean;但是Java Bean可以同时是一个Spring Bean;Spring Bean也可以是一个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。

责任编辑:武晓燕 来源: 码农小胖哥
相关推荐

2021-05-11 07:42:59

BeanSpring属性

2009-06-17 17:04:37

BeanFactorySpring

2016-01-04 10:10:45

项目经理成功

2021-06-18 07:35:46

Java接口应用

2012-07-18 12:44:02

2009-08-04 13:31:35

C#自定义事件

2021-07-05 08:43:46

Spring Beanscope作用域

2021-02-03 08:02:50

Spring Bean框架

2021-01-31 22:54:39

Java Jsoy开发

2023-09-05 08:23:56

SpringScope方法

2018-07-06 15:58:34

SpringSchemaJava

2015-11-12 09:17:30

Java Main执行

2024-05-29 08:19:03

2017-11-17 09:13:31

Java注解

2024-10-16 17:01:17

Java开发SpringBoot

2009-06-22 16:19:45

JavaBeansEJBPOJO

2019-11-19 08:04:16

JavaHashSet去重

2009-06-22 16:59:33

POJOSpringEJB 3.0

2021-03-08 08:40:25

Spring Bean 创建单例对象

2020-06-30 15:35:36

JavaSPI代码
点赞
收藏

51CTO技术栈公众号