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

百度突然搜不到我的网站友情链接系统

百度突然搜不到我的网站,友情链接系统,电子政务网站开发和设计的关系,巩义做网站汉狮网络01 繁琐编码 初入 Java 开发领域时,编写实体类的琐碎经历想必各位都深有感触。 每当创建一个实体类,铺天盖地的 getter、setter、toString 方法接踵而至,手指在键盘上频繁敲击,酸痛不已。 而 Lombok 这一神器的出现&#xff0c…

在这里插入图片描述

01 繁琐编码

初入 Java 开发领域时,编写实体类的琐碎经历想必各位都深有感触。

每当创建一个实体类,铺天盖地的 getter、setter、toString 方法接踵而至,手指在键盘上频繁敲击,酸痛不已。

而 Lombok 这一神器的出现,宛如黑暗中的一道曙光,凭借注解技术,在编译阶段自动产出那些令人厌烦的样板代码,极大地减轻了开发人员的负担。

02 基础注解

1. @Getter 与 @Setter

这两个注解堪称懒人福音。

试想一个拥有多个私有字段的 User 类,若手动编写 getter 和 setter 方法,代码量瞬间膨胀。

而使用 @Getter 和 @Setter 后,一切变得简洁明了。

@Getter
@Setter
public  class  User {private  String  name; // 用户名private  int age;     // 用户年龄
}

注解 :

  1. @Getter 为每个私有字段生成对应的 getXxx() 方法。

  2. @Setter 则生成 setXxx() 方法,方便外部修改字段值。

  3. 这使得 User 类的字段操作变得异常便捷。

但实际场景中,有些字段可能无需 setter 方法,例如数据库中的主键 ID 字段,通常不希望被随意修改。

此时,可仅在类上标注 @Getter,对需要 setter 的字段单独使用 @Setter。

2. 构造方法相关注解

• @NoArgsConstructor :如其名,生成无参构造方法。
在需要实例化但不立即赋值的场景下非常实用。

• @AllArgsConstructor :生成包含所有字段的构造方法,方便一次性为所有属性赋值。

@NoArgsConstructor
@AllArgsConstructor
public  class  Product {private  Long   id;         // 产品 IDprivate  String   name;     // 产品名称private  BigDecimal  price; // 产品价格
}

注解 :

  1. @NoArgsConstructor 提供无参构造,方便反序列化等场景。

  2. @AllArgsConstructor 使得创建 Product 对象时可直接传入所有属性值,提高开发效率。

3. 但若某些字段应为必填(如产品名称和价格),而 ID 可由数据库自动生成,@AllArgsConstructor 可能会导致字段赋值不符合业务逻辑。

这时,@RequiredArgsConstructor 便大显身手。

它会为所有 final 字段和带有 @NonNull 注解的字段生成构造参数。

public  class  Order {private  final   Long  id; // 订单 ID,final  表示不可修改private  String   orderNo; // 订单编号@NonNullprivate  Customer  customer; // 客户信息,@NonNull 表示非空private  String   remark; // 备注
}
public  class  ProductService {private  final   ProductMapper  productMapper; // 数据库映射器private  final   Cache  productCache; // 缓存
}

注解 :

  1. @RequiredArgsConstructor 针对 final 字段和 @NonNull 注解字段生成构造方法。

  2. 保证关键字段在对象创建时就被正确初始化。

  3. 避免了非必填字段在构造方法中强制出现,使构造逻辑更符合业务规则。

03 进阶注解:提升开发体验

1. @Data

堪称 Lombok 中的瑞士军刀,它集 @Getter、@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor 于一身。

一个简单的 Employee 类,使用 @Data 后,几乎所有常用方法都已就绪。

@Data
public  class  Employee {private  Long  id;         // 员工 IDprivate  String  name;     // 员工姓名private  Department department; // 所属部门
}

注解 :

  1. 自动生成 Getter 和 Setter 方法,方便字段读写。

  2. 重写 toString() 方法,便于对象信息的查看与调试。

  3. 实现 equals() 和 hashCode() 方法,基于所有字段进行比较和哈希计算。

  4. 提供包含 final 字段的构造方法。

但需注意,@Data 生成的 Setter 方法会让所有字段均可修改,这在某些场景下可能引发数据安全问题。

比如对于一些敏感信息或业务规则明确不可变的字段,我们更倾向于使用只读的注解组合。

2. @Value

与 @Data 相对应,@Value 生成的类是不可变的,所有字段都是 final 的,非常适合表示值对象。

@Value
public  class  Point {int x; // 坐标 x 值int y; // 坐标 y 值
}

注解 :

  1. 自动为字段生成 Getter 方法。

  2. 字段默认为 final ,保证对象创建后其状态不可改变。

  3. 重写 equals() 和 hashCode() 方法,基于字段内容进行比较。

这种不可变性在多线程环境下尤为可贵,能有效避免并发修改带来的问题。

3. 日志注解 @Slf4j

开发过程中,日志记录是追踪程序行为、排查问题的关键手段。

手动创建 Logger 对象既繁琐又容易出错,而 @Slf4j 能自动为类生成 Logger 字段。

import lombok.extern.slf4j.Slf4j;@Slf4j
public  class  OrderService {public  void  createOrder(Order order) {log.info("Creating order: {}", order); // 记录订单创建信息}
}

注解 :

  1. @Slf4j 自动引入 slf4j 日志框架的 Logger 对象。

  2. 通过 log.info() 等方法,可方便地输出不同级别的日志信息。

  3. 提高代码整洁性,使日志记录操作更加直观、简洁。

4. 建造者注解 @Builder

当面对包含众多可选参数的类时,传统的构造方法会变得冗长且难以维护。

@Builder 注解巧妙地运用建造者模式,巧妙地解决了这一难题。

@Builder
publicclassComputer {private  String  cpu;     // 中央处理器private  String  memory;  // 内存private  String  disk;    // 硬盘private  String  gpu;     // 显卡
}// 使用建造者模式创建 Computer 对象
ComputermyPC= Computer.builder().cpu("i7").memory("16GB").disk("512GB SSD").build();

注解 :

  1. @Builder 为每个字段生成一个建造者方法。

  2. 通过链式调用,可清晰地指定每个参数的值。

  3. 对于非必需参数,可以选择性地设置,提高了代码的灵活性和可读性。

这种风格在配置类、复杂对象创建场景中格外受欢迎,能让代码逻辑更加清晰、易于理解和维护。

5. 非空注解 @NonNull

@NonNull 注解犹如程序中的安全卫士,在编译期便能发现潜在的空指针问题。

当标注了 @NonNull 的参数传入 null 时,Lombok 会果断抛出 NullPointerException,避免程序在运行时因空指针异常而崩溃。

public  class  StringUtil {public  void  process(@NonNull String  input) {System.out.println(input.length());}
}

注解 :

  1. @NonNull 用于方法参数时,确保传入的参数不能为 null。

  2. 在编译阶段就能捕获可能的空值风险。

  3. 提高代码的健壮性和可靠性,减少因空指针导致的程序错误。

6. 懒加载技术

对于那些初始化成本高昂的字段,采用懒加载策略可以优化程序性能。

只有在第一次访问该字段时,才进行初始化操作。

public  classHeavyResource {privatefinal  Map<String , Object > cachedData;publicHeavyResource() {cachedData = null; // 初始化为 null}public  Map<String , Object > getCachedData() {if (cachedData == null) {cachedData = initCache();}return  cachedData;}private  Map<String , Object > initCache() {// 模拟初始化耗时操作Map<String , Object > map = newHashMap<>();// 填充数据...return  map;}
}

注解 :

  1. cachedData 字段初始为 null。

  2. 当第一次调用 getCachedData() 方法时,才执行 initCache() 方法进行初始化。

  3. 避免了对象创建时就进行不必要的资源消耗,提升了程序启动和运行的效率。

04 实际项目中的注解搭配策略

在实际的项目开发中,合理搭配使用 Lombok 注解,能够事半功倍。

• 对于实体类:若需要对象可变,可使用 @Data 加上 @Builder;若要求对象不可变,则选择 @Value,确保数据的完整性和安全性。
• 对于服务类:@Slf4j 与 @RequiredArgsConstructor 是黄金组合。前者方便日志记录,后者能够配合 Spring 框架的依赖注入,使服务类的构造和日志操作简洁又高效。

• 对于配置类:@Builder 注解能将复杂的配置参数以清晰、灵活的方式呈现,方便开发者进行配置管理和调整。
• 对于工具类:@UtilityClass 注解可以确保工具类不能被实例化,同时为其中的静态方法提供便捷的访问方式,保证工具类的正确使用和代码的整洁。

Lombok 以其出色的注解功能,极大地减少了 Java 开发中的样板代码,

让开发人员能够将更多的精力投入到核心业务逻辑的实现上。

http://www.mnyf.cn/news/483.html

相关文章:

  • 广告网站留电话不用验证码每日舆情信息报送
  • 小程序模板源代码搜索优化推广公司
  • 关于网站建设的意义营销型网站建设套餐
  • ASP JSP动态网站开发网站排名怎么做
  • 网络下载软件衡水seo排名
  • 武隆网站建设费用新闻最新消息
  • 商城网站建设是 什么软件重庆疫情最新数据
  • 什么牛网站建设seo搜索引擎优化平台
  • 网站中的滚动照片怎么做模板建站优点
  • 西安电子商务网站建设百度应用app
  • 国内医疗美容网站建设南宁seo优化公司
  • 做网站怎么留接口合肥网络推广
  • 装修设计网站排行榜推广软文范例100字
  • 企联网站建设代运营竞价公司
  • 网站源码下载了没有管理后台农村电商平台
  • 简述一个网站开发流程在线h5免费制作网站
  • 兰州网站订制如何提高搜索引擎优化
  • 给别人做网站用做假酒验证淘宝怎么推广自己的产品
  • 投注网站开发长沙网站优化
  • 做网站的数据库的设计谷歌在线搜索
  • 青峰网站建设室内设计培训班学费一般多少
  • 网站做点击收费电子商务网站有哪些?
  • 网站字体13px推广app平台有哪些
  • 做地方房产网站怎么样第三方营销策划公司有哪些
  • 网站做生鲜线下推广建议深圳网站优化推广
  • 做娱乐性手机网站国内十大软件测试培训机构
  • 环保公司网站模版seo工资多少
  • 企业网站建设维护方案推广方案是什么
  • 电信ip做的网站移动不能访问seo网站首页推广
  • 北京上海网站建设沧州网站seo公司