上海建网站开发公司建站标准
2026/1/19 23:35:12 网站建设 项目流程
上海建网站开发公司,建站标准,建设银行的官方网站纪念币,wordpress访问次数Lombok 的核心注解围绕消除 Java 模板代码设计#xff0c;覆盖字段方法生成、构造器、日志、对象创建、资源管理等核心场景。以下是最常用的 8 个核心注解#xff0c;按使用频率和重要性分类详解#xff0c;附场景化示例和避坑要点#xff1a; 一、基础字段方法简化注解覆盖字段方法生成、构造器、日志、对象创建、资源管理等核心场景。以下是最常用的8 个核心注解按使用频率和重要性分类详解附场景化示例和避坑要点一、基础字段方法简化注解最核心这类注解解决 POJO 类中getter/setter、toString、equals/hashCode等重复代码问题。1.Getter / Setter基础核心作用为类的字段生成getXxx()/setXxx()方法可单独用在类/字段上。使用场景仅需生成部分字段的 get/set或自定义访问权限。示例importlombok.Getter;importlombok.Setter;importlombok.AccessLevel;publicclassUser{// 类级别为所有字段生成public的get/setfinal字段仅生成getGetterSetterprivateLongid;// 字段级别仅为username生成get且setter为protectedGetterSetter(AccessLevel.PROTECTED)privateStringusername;// 禁用setter仅生成getterGetterSetter(AccessLevel.NONE)privateStringpassword;}2.Data一站式聚合核心作用聚合Getter Setter ToString EqualsAndHashCode RequiredArgsConstructor一键生成核心方法日常开发最常用。关键坑点不生成无参构造器需配合NoArgsConstructor框架如 Spring/MyBatis 必备。示例importlombok.Data;importlombok.NoArgsConstructor;importlombok.AllArgsConstructor;Data// 核心生成get/set/toString/equals/hashCode/RequiredArgsConstructorNoArgsConstructor// 补充无参构造必须加AllArgsConstructor// 补充全参构造按需publicclassUser{privateLongid;privateStringusername;// 排除toString密码不泄露ToString.ExcludeprivateStringpassword;}3.ToString自定义 toString 方法核心作用生成包含指定字段的toString()避免手动拼接字符串。进阶用法排除敏感字段、包含父类字段。示例importlombok.ToString;ToString(excludepassword,// 排除密码字段callSupertrue// 包含父类字段默认false)publicclassUserextendsBaseEntity{privateLongid;privateStringusername;privateStringpassword;}4.EqualsAndHashCode自定义相等判断核心作用基于指定字段生成equals()和hashCode()默认所有非静态字段。ORM 场景必调JPA/MyBatis 实体类建议仅基于主键id生成避免业务字段修改导致 hash 变化。示例importlombok.EqualsAndHashCode;EqualsAndHashCode(ofid)// 仅基于id生成忽略其他字段publicclassUser{privateLongid;// 主键privateStringusername;// 业务字段不参与相等判断}二、构造器注解解决对象初始化Lombok 提供 3 个构造器注解覆盖不同初始化场景解决new 对象时参数繁琐问题。1.NoArgsConstructor无参构造核心作用生成无参构造器public User() {}。必用场景Spring MVC 接收参数、MyBatis 反射实例化、Jackson 反序列化等Data不生成必须手动加。2.RequiredArgsConstructor必填字段构造器核心作用为final 字段或NonNull 注解字段生成构造器Data已聚合。使用场景依赖注入如 Spring 构造器注入。示例importlombok.RequiredArgsConstructor;importorg.springframework.stereotype.Service;ServiceRequiredArgsConstructor// 为final字段生成构造器publicclassUserService{// 构造器注入无需AutowiredprivatefinalUserMapperuserMapper;privatefinalRedisTemplateString,ObjectredisTemplate;}3.AllArgsConstructor全参构造核心作用为所有字段生成全参构造器参数顺序与字段定义一致。注意参数过多时可读性差建议用Builder替代。三、日志注解简化日志声明核心是Slf4j替代手动声明Logger之前已详细讲过此处补充核心要点注解Slf4j推荐、Log4j2高性能日志、CommonsLog老旧框架。核心价值自动生成private static final Logger log ...直接用log变量。示例importlombok.extern.slf4j.Slf4j;importorg.springframework.web.bind.annotation.RestController;Slf4j// 生成log变量RestControllerpublicclassUserController{publicvoidgetUser(Longid){log.info(查询用户ID{},id);// 直接使用}}四、高级对象创建注解1.Builder建造者模式核心作用生成链式调用的建造者方法替代繁琐的 setXxx() 或全参构造。使用场景对象参数多、可选参数多的场景如创建复杂实体。示例importlombok.Data;importlombok.Builder;importlombok.NoArgsConstructor;importlombok.AllArgsConstructor;DataNoArgsConstructorAllArgsConstructorBuilder// 启用建造者模式publicclassUser{privateLongid;privateStringusername;privateIntegerage;}// 使用链式创建对象UseruserUser.builder().id(1L).username(zhangsan).age(20).build();2.Value不可变类注解核心作用生成“不可变类”所有字段默认final仅生成getter无setter替代Data 全final字段。使用场景DTO/VO 等无需修改的对象如接口返回值。示例importlombok.Value;Value// 所有字段final 仅生成getter 无参构造需手动加NoArgsConstructorNoArgsConstructor(forcetrue)// forcetrue为final字段赋默认值如nullpublicclassUserVO{Longid;Stringusername;}五、实用工具注解1.NonNull非空校验核心作用为字段的setter/构造器添加非空校验null 时抛NullPointerExceptionNPE。示例importlombok.Data;importlombok.NonNull;DatapublicclassUser{NonNull// 非空校验setUsername(null)会抛NPEprivateStringusername;}2.Cleanup自动关闭资源核心作用自动关闭 IO 流/连接替代 try-finally支持close()方法的资源。示例importlombok.Cleanup;importjava.io.FileReader;importjava.io.IOException;publicclassFileUtil{publicStringreadFile(Stringpath)throwsIOException{CleanupFileReaderreadernewFileReader(path);// 自动关闭readerchar[]bufnewchar[1024];reader.read(buf);returnnewString(buf);}}3.SneakyThrows隐藏异常捕获核心作用自动捕获受检异常并包装为运行时异常无需手动 try-catch。使用场景简化代码谨慎使用避免掩盖异常。示例importlombok.SneakyThrows;importjava.io.IOException;publicclassDemo{SneakyThrows(IOException.class)// 捕获IOException并抛出publicvoidread(){// 无需try-catchnewFileReader(test.txt).read();}}三、核心注解组合使用实战示例importlombok.Data;importlombok.Builder;importlombok.NoArgsConstructor;importlombok.AllArgsConstructor;importlombok.NonNull;importlombok.ToString;Data// 基础方法NoArgsConstructor// 无参构造AllArgsConstructor// 全参构造Builder// 建造者模式ToString(excludepassword)// 排除密码publicclassUser{privateLongid;NonNull// 非空校验privateStringusername;privateStringpassword;// 仅id参与相等判断Overridepublicbooleanequals(Objecto){if(thiso)returntrue;if(onull||getClass()!o.getClass())returnfalse;Useruser(User)o;returnid.equals(user.id);}OverridepublicinthashCode(){returnid.hashCode();}}四、避坑核心要点Data必加NoArgsConstructor框架反射实例化需要无参构造否则报NoSuchMethodExceptionORM 实体类慎用Data的equals/hashCode建议用EqualsAndHashCode(of id)仅基于主键生成敏感字段必排除密码/令牌用ToString.Exclude避免泄露Builder配合构造器需加NoArgsConstructor AllArgsConstructor否则build()可能报错生产环境禁用SneakyThrows避免掩盖关键异常仅在非核心逻辑使用。总结Lombok 核心注解可分为 4 类类别核心注解核心场景字段方法Getter/Setter、DataPOJO 类简化构造器NoArgsConstructor、Builder对象初始化日志Slf4j日志记录工具类NonNull、Cleanup非空校验、资源管理日常开发中Data NoArgsConstructor Slf4j Builder是最常用的组合能覆盖 90% 以上的模板代码场景。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询