一文搞懂 java 中 POJO 和 bean 区别

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

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

1. 定义与规范

  • POJO(简单老式Java对象)

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

    • 是一种遵循特定规范的POJO
    • 必须有无参构造方法
    • 字段必须私有(private)
    • 必须通过公共(public)的getter/setter方法访问字段
    • 可以实现Serializable接口(通常建议实现,用于序列化)
    • 示例:
    java 复制代码
    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,这些规矩主要是为了让框架能更方便地处理对象。

相关推荐
rannn_11114 分钟前
【苍穹外卖|Day4】套餐页面开发(新增套餐、分页查询、删除套餐、修改套餐、起售停售)
java·spring boot·后端·学习
短剑重铸之日24 分钟前
《设计模式》第十一篇:总结
java·后端·设计模式·总结
Dragon Wu1 小时前
Spring Security Oauth2.1 授权码模式实现前后端分离的方案
java·spring boot·后端·spring cloud·springboot·springcloud
一个有梦有戏的人2 小时前
Python3基础:进阶基础,筑牢编程底层能力
后端·python
爬山算法2 小时前
Hibernate(88)如何在负载测试中使用Hibernate?
java·后端·hibernate
独断万古他化2 小时前
【Spring 原理】Bean 的作用域与生命周期
java·后端·spring
我爱加班、、2 小时前
Websocket能携带token过去后端吗
前端·后端·websocket
一 乐3 小时前
校园二手交易|基于springboot + vue校园二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
80530单词突击赢3 小时前
SpringBoot整合SpringMVC全解析
java·spring boot·后端
hdsoft_huge3 小时前
1panel面板中部署SpringBoot和Vue前后端分离系统 【图文教程】
vue.js·spring boot·后端