一文弄懂java中POJO和bean区别

 更新时间:2025年10月11日 09:40:01   作者:shengjk1  
本文主要介绍了一文弄懂java中POJO和bean区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在Java中,POJO(Plain Old Java Object)和JavaBean都是普通的Java对象,但它们在定义规范和使用场景上存在一些区别:

1. 定义与规范

  • POJO(简单老式Java对象)

    • 没有严格的规范约束,本质上就是一个普通的Java类
    • 可以包含字段、构造方法、getter/setter方法
    • 不需要实现特定接口或继承特定类
    • 可以有任意的方法,不限制访问修饰符
    • 示例:
    public class User {
        private String name;
        private int age;
        
        // 可以只有字段,甚至没有getter/setter
        // 可以有任意构造方法
    }
    
  • JavaBean

    • 是一种遵循特定规范的POJO
    • 必须有无参构造方法
    • 字段必须私有(private)
    • 必须通过公共(public)的getter/setter方法访问字段
    • 可以实现Serializable接口(通常建议实现,用于序列化)
    • 示例:
    import java.io.Serializable;
    
    public class UserBean implements Serializable {
        private String name;
        private int age;
        
        // 必须有无参构造
        public UserBean() {}
        
        // 必须有getter/setter
        public String getName() { return name; }
        public void setName(String name) { this.name = name; }
        
        public int getAge() { return age; }
        public void setAge(int age) { this.age = age; }
    }
    

2. 关系

  • 所有JavaBean都是POJO,但并非所有POJO都是JavaBean
  • JavaBean是POJO的一个子集,是满足特定规范的POJO

3. 使用场景

  • POJO:更通用,适用于各种场景,尤其是简单的数据载体,如DTO(数据传输对象)、VO(值对象)等
  • JavaBean:主要用于需要符合特定规范的场景,如:
    • 早期的JSP标签库
    • 序列化/反序列化(如JSON转换)
    • 各种框架的反射操作(如Spring、Hibernate等)

4. 总结

简单来说,POJO更自由灵活,而JavaBean则是"规矩更多"的POJO,这些规矩主要是为了让框架能更方便地处理对象。

到此这篇关于一文弄懂java中POJO和bean区别的文章就介绍到这了,更多相关java POJO bean内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springMvc注解之@ResponseBody和@RequestBody详解

    springMvc注解之@ResponseBody和@RequestBody详解

    本篇文章主要介绍了springMvc注解之@ResponseBody和@RequestBody详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Springboot继承Keycloak实现单点登录与退出功能

    Springboot继承Keycloak实现单点登录与退出功能

    这篇文章主要介绍了Springboot继承Keycloak实现单点登陆与退出,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Mybatis-plus4条件构造器使用方式

    Mybatis-plus4条件构造器使用方式

    这篇文章主要介绍了Mybatis-plus4条件构造器使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • MyBatis动态SQL与缓存原理深入分析

    MyBatis动态SQL与缓存原理深入分析

    这篇文章主要介绍了MyBatis动态SQL与缓存原理,Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题
    2023-02-02
  • 解决SpringMvc中普通类注入Service为null的问题

    解决SpringMvc中普通类注入Service为null的问题

    这篇文章主要介绍了解决SpringMvc中普通类注入Service为null的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java多线程同步器代码详解

    Java多线程同步器代码详解

    这篇文章主要介绍了Java多线程同步器代码详解,文章分别介绍了是CountDownLatch,Semaphore,Barrier和Exchanger以及其相关代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • FasfDFS整合Java实现文件上传下载功能实例详解

    FasfDFS整合Java实现文件上传下载功能实例详解

    这篇文章主要介绍了FasfDFS整合Java实现文件上传下载功能实例详解,需要的朋友可以参考下
    2017-08-08
  • JAVA定义变量与输出详解

    JAVA定义变量与输出详解

    这篇文章主要介绍了JAVA定义变量与输出详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • java操作excel的方法

    java操作excel的方法

    这篇文章主要介绍了java操作excel的方法,实例分析了java针对excel文件的读写、打开、保存等操作技巧,需要的朋友可以参考下
    2015-07-07
  • Java远程调试保姆级教程(附详细图文)

    Java远程调试保姆级教程(附详细图文)

    这篇文章主要介绍了Java远程调试的相关资料,Java远程调试是一种在本地计算机上调试部署在远程服务器上的Java应用程序的能力,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07

最新评论