一文搞懂 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,这些规矩主要是为了让框架能更方便地处理对象。

相关推荐
糖拌西瓜皮21 分钟前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js
雪隐24 分钟前
个人电脑玩AI-04让5060 Ti给你打工——本地claude code编程助理
人工智能·后端
AskHarries30 分钟前
Browser Tool:网页打开、点击、输入、截图和验证
后端
程序员cxuan38 分钟前
分享一下我最近常用的 10 个 Codex 小技巧。
人工智能·后端·程序员
一线大码41 分钟前
Smart-Doc 的简单使用
java·后端·restful
喵个咪1 小时前
技术复盘:基于 go-wind-cms 的官网+商城双业务渐进拆分实战
后端·架构·go
ZengLiangYi1 小时前
批量导入 1000 条对话的性能优化实战
javascript·后端·架构
juejin9981 小时前
Claude Code 环境跑通:第一次有效对话
后端
wei_shuo1 小时前
KES 数据库迁移实战:从 Oracle/MySQL 到 KingbaseES 的平滑过渡指南
后端
长栎1 小时前
Lombok @Builder 越用越爽,直到生产上构造函数的参数顺序全乱了
后端