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

相关推荐
码事漫谈6 小时前
丢得静悄悄,谈一谈 Agent 的记忆是怎么没的
后端
迪飞特科技6 小时前
智慧物业平台实战:Spring Boot 整合小程序实现报修巡检费用全流程
spring boot·后端·小程序
考虑考虑7 小时前
@JsonInclude注解使用
spring boot·后端·spring
IT_陈寒7 小时前
Vite的这个问题坑了我三天,原来如此解决!
前端·人工智能·后端
网易云信7 小时前
大模型能上岗做销售吗?我们让 12 款国产模型交了 420 份作业
前端·后端
CCblandy7 小时前
HTTP 长连接 3 类故障实测:[WinError 10053]、99 个 TIME_WAIT、69 次多余握手,4 种对策怎么选
后端·python·网络协议·http·云原生·性能优化·架构
蜗牛互联网7 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python
dd聊技术8 小时前
Prompt 从代码常量搬进数据库:改一句话,不用再发一次版
java·后端
9命怪猫8 小时前
关于eBPF的JIT运维需要了解的
后端
9命怪猫8 小时前
运维eBPF 常用命令清单
后端