当前位置: 首页 > news >正文

Java Bean演进历程:从POJO到Spring Boot配置绑定

一、早期阶段:手动编写Java Bean

  1. 基本结构

    • 私有属性:所有字段均为private,保证封装性。

    • 公共构造方法:提供无参构造(JavaBean规范)或有参构造(POJO常见)。

    • Setter/Getter方法:手动编写属性的访问和修改方法。

    public class User {private String name;private int age;// 无参构造(JavaBean规范)public User() {}// Getter/Setter方法public String getName() { return name; }public void setName(String name) { this.name = name; }// 其他方法...
    }
  2. 问题

    • 代码冗余:大量重复的样板代码。

    • 维护成本高:属性变更需同步修改方法。


二、Lombok阶段:自动化代码生成
  1. 引入Lombok

    • 依赖:通过Maven/Gradle添加Lombok依赖。

    • 注解驱动:使用@Data@Getter等注解自动生成代码。

    import lombok.Data;@Data // 自动生成Getter/Setter/toString/equals/hashCode
    public class User {private String name;private int age;
    }
  2. 关键注解

    • @Data:综合注解,生成Getter/Setter等。

    • @NoArgsConstructor:生成无参构造。

    • @AllArgsConstructor:生成全参构造。

  3. 优势与局限

    • 优点:代码简洁,减少冗余。

    • 局限:需IDE插件支持,可能隐藏逻辑细节。


三、Spring Boot配置绑定
  1. 外部化配置

    • 目标:将application.propertiesapplication.yml中的配置绑定到Java类。

    # application.properties
    app.name=MyApp
    app.version=1.0

  2. 配置类注解

    • @ConfigurationProperties:绑定配置到类的字段。

    • @Component@Configuration:将类注册为Spring Bean。

    @Configuration
    @ConfigurationProperties(prefix = "app")
    public class AppConfig {private String name;private String version;// Setter方法(旧版本必需)public void setName(String name) { this.name = name; }// 其他Setter...
    }
  3. 新特性:构造器绑定(Spring Boot 2.2+)

    • 无需Setter:通过构造器直接注入属性。

    • 不可变对象:保证线程安全和数据一致性。

    @ConfigurationProperties(prefix = "app")
    public class AppConfig {private final String name;private final String version;// 构造器绑定(需@ConstructorBinding)public AppConfig(String name, String version) {this.name = name;this.version = version;}
    }

四、对比总结
阶段代码量灵活性维护性适用场景
手动编写Java Bean传统SSM项目
Lombok快速开发,减少样板代码
Spring Boot配置绑定外部化配置、云原生应用

五、扩展:Java Record(Java 14+)
  • 不可变对象:自动生成equals()hashCode()等方法。

  • 简化语法:适用于纯数据传输对象(DTO)。

public record User(String name, int age) {}

六、常见误区纠正
  1. @Configuration vs @ConfigurationProperties

    • @Configuration:定义配置类,包含@Bean方法。

    • @ConfigurationProperties:绑定外部属性到类,无需@Bean

  2. Setter是否必需?

    • 旧版本:需Setter方法。

    • 新版本:支持构造器绑定(推荐)。


七、最佳实践
  1. 优先使用构造器绑定:保证配置类的不可变性。

  2. 结合Lombok和Spring Boot:在非配置类中使用@Data简化代码。

  3. 版本适配:根据Spring Boot版本选择绑定方式。

相关文章:

  • Vue3 SSR生物启发架构:仿生渲染与DNA流式编码
  • 解决JSON格式数据大小写问题,以及@JsonProperty 和@JSONField序列化的区别
  • TVS管与ESD保护二极管详解:原理、区别与应用选型
  • 广东广州一家IPO资产重组疑点重重,信息披露真实性存疑
  • 通过高斯分布概率密度函数寻找到数据中的异常点
  • TLS/SSL 弱密码套件中危漏洞修复
  • Security 权限控制的基本流程
  • 基于 Python 的 ROS2 应用开发全解析
  • 【扩散模型(十三)】Break-A-Scene 可控生成,原理与代码详解(中)Cross Attn Loss 代码篇
  • tcp和udp的数据传输过程以及区别
  • neakyThrows 是 Lombok 库中的一个注解
  • LeetCode Hot100 刷题笔记(10)—— ACM格式输入输出练习
  • 2025年文件加密软件的作用及其在现代社会中的重要性
  • 类的加载过程
  • Policy Gradient思想、REINFORCE算法,以及贪吃蛇小游戏(一)
  • SDK游戏盾如何接入?复杂吗?
  • RCL谐振电压增益曲线
  • 【树形dp题解】dfs的巧妙应用
  • SpringCloud企业级常用框架整合--下篇
  • 在 Linux 中判断当前网络类型与网卡类型的实用方法(内外网判断 + 网卡分类)
  • 山西网站制作公司哪家好/谷歌搜索引擎免费入口
  • 做贸易的都有什么网站/南安网站建设
  • 六安网站制作/制作app平台需要多少钱
  • 嘉兴做网站优化公司/免费seo推广公司
  • 北沙滩网站建设/重庆关键词优化服务
  • java建设网站的步骤/北京企业网站推广哪家公司好