首页 > 编程语言 >Java(3)-POJO和Java bean的区别是什么

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

时间:2024-04-27 20:12:07浏览次数:29  
标签:Java SpringMVC Bean POJO 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 识别为控制器。这种方式简化了代码的开发,增强了代码的可读性和可维护性。

标签:Java,SpringMVC,Bean,POJO,bean,来宾,特定
From: https://www.cnblogs.com/marigo/p/18162438

相关文章

  • 在html中应用JavaScript
    1.在html中调用jsjs需要用<script>脚本写入位置</script>声明;也可以用外部文件引入,如<scripttype="text/javascript"src="script1.js"></script>。当js位于html的<head>内:这些脚本在选择触发它的时候被触发当js位于html的<body>内:这些脚本在页面加载时触发2.js的数据类......
  • Java(1)-粗解动态绑定
    Java的动态绑定机制是OOP中一个非常核心的概念。要理解动态绑定需要从Java的对象和类说起。当我们在创建一个类的时候,实际上就是在定义一种新的数据类型。类中可以包含属性和方法,基于这个类创建一个对象的时候,这个对象就有拥有该类所有的属性和方法。在引出动态绑定的概念之前,可......
  • Java(2)-粗解类加载器
    Java的类加载器是Java运行时环境中的重要组件,核心功能是将类的字节码加载到Java虚拟机中。举个例子可以通过一个图书馆的比喻来形象地解释类加载器的作用、用法和使用场景。想象一下,有一个巨大的图书馆(JVM),其中有非常多的藏书(类)。当你(程序)需要阅读一本书(使用一个类)时,你首先需要......
  • 学习笔记-Java内存区域
    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外的人想进去,墙里面的人想出来。运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间。有的区域随着虚拟机进程启动一直......
  • 【Java】java1.8安装教程及java环境配置
    一、下载JDK源文件1、根据自己系统,下载对应的文件下载地址:Java存档下载-JavaSE8u211及更高版本|Oracle中国 2、下载后,可将安装包移动到自定义目录中,然后双击文件进行安装操作 二、安装1、双击安装文件,根据安装向导指引,点击下一步,进行安装 2、点击下一步后,根......
  • 使用 @NoRepositoryBean 简化数据库访问
    在SpringDataJPA应用程序中管理跨多个存储库接口的数据库访问逻辑可能会变得乏味且容易出错。开发人员经常发现自己为常见查询和方法重复代码,从而导致维护挑战和代码冗余。幸运的是,SpringDataJPA为这个问题提供了一个强大的解决方案:@NoRepositoryBean 注解。在本文中,我们......
  • java发送http请求
    privatevoidhandleCartItems(List<CartVO>vos){//1.获取商品idSet<Long>itemIds=vos.stream().map(CartVO::getItemId).collect(Collectors.toSet());//2.查询商品ResponseEntity<List<ItemDTO>>response......
  • 在JavaScript中,DOM对象与jQuery对象的区别与转换
    Dom原生对象和jQuery对象的区别:jQuery选择器得到的jQuery对象和标准的js中的document.getElementById()取得的dom对象是两种不同类型,两者不等价。注:js原生获取的dom是一个对象;jQuery对象就是一个数组对象。JQuery无法使用DOM对象的任何方法,同样的DOM对象也不能使用JQuery里......
  • Java读取网址信息
    Java读取网址信息今天的需求是根据接口获取JSON数据并存入,之前只会前端用Ajax或者Axios去处理显示出来没想过后端也要拿,没有思路于是查找,发现都是基础以前用的还是太少了,特此总结,后续有需要再补充。1.读取get请求,无需参数publicstaticStringget(StringurlStr){//......
  • 微服务想缓存一些数据,不希望重复调用。java SoftReference软引用存储缓存
    背景:微服务我们要调用字典数据,但是很多都是要重复调用的,没有缓存,我为了设置一个应用的缓存,并且可以定时清理,更新 首先定义两个静态数据,。一个软连接缓存,一个定时清理线程privatestaticSoftReference<Map<String,Map<String,DictionaryVo>>>plmDicMapCache=newSoftR......