Java(3)-POJO和Java bean的区别是什么

POJO(Plain Old Java Object)和 Java Bean 是两个密切相关但有细微差别的概念,在 Java 编程中经常被提及。这两者之间的主要区别在于它们的用途和设计要求
首先简单地介绍POJO是什么,POJO 是 "Plain Old Java Object" 的缩写,指的是一个普通的 Java 对象,它不依赖于特定的 Java 框架,也不需要实现任何接口或继承特定的类。

Java Bean

Java Bean 是一种特殊类型的 POJO,它遵循了更加严格的规范。Java Bean 是为了易于保存、传输和访问其属性而设计的,通常用于各种 Java 技术和框架中,特别是在需要自动化处理如序列化、传递或通过可视化工具操作对象的场合。
Java Bean 的要求包括:

  1. 类必须是公共的(public)
  2. 必须有一个无参数的构造函数
  3. 属性必须通过 getter 和 setter 方法访问
  4. 类应该是可序列化的,以便可以轻松地保存和恢复其状态

POJO

与 Java Bean 相比,POJO 的要求更加宽松。POJO 只是一个遵循最少的约束和依赖的普通 Java 对象。POJO 不必实现序列化接口,也不需要遵循属性访问的严格模式(getter 和 setter 方法)。POJO 的设计目的是为了简化对象的创建和操作,使得对象的使用不依赖于 Java 的特定规范或框架。

关系与区别

  1. 所有 Java Bean 都是 POJO但不是所有 POJO 都是 Java Bean
  2. Java Bean 需要满足更多的规范,因此在功能上更加严格,适用于那些需要通过工具处理或网络传输对象的场景
  3. POJO 更注重保持简单和灵活性,适用于不需要额外规范的普通对象使用场景

为什么会纠结POJO,是因为看到“SpringMVC 通过注解,让 POJO 成为控制器,不需要继承类或者实现接口。”这句话让我产生了疑惑,POJO有什么特殊之处。

对于这句话可以这么理解:
想象你在组织一个大型派对,每位来宾在进入派对时都需要某种指示(比如哪里取餐、哪里是洗手间等)。在没有 SpringMVC 的情况下,你可能需要一队专门的接待人员(继承特定类或实现接口的传统控制器),他们通过特定的培训(继承或实现特定的框架代码)来指导来宾。
而在 SpringMVC 中,任何一个普通的派对来宾(POJO)都可以通过佩戴一个特殊的徽章(@Controller 注解)来充当接待人员的角色。这个徽章告诉其他来宾,佩戴它的人可以指引他们到达正确的位置。这样,没有必要进行特殊的培训或穿特定的制服,普通来宾就能承担起接待的职责。
如果专业一点的话,就是在 SpringMVC 中,@Controller 注解的使用允许开发者将一个普通的 Java 类标记为处理 HTTP 请求的控制器。这个类不需要继承任何特定的类或实现任何接口,仅通过注解即可被 Spring 的 Dispatcher Servlet 识别为控制器。这种方式简化了代码的开发,增强了代码的可读性和可维护性。

posted @ 2024-04-27 20:03  marigo  阅读(4)  评论(0编辑  收藏  举报