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

对企业网站的印象湖南正规seo公司

对企业网站的印象,湖南正规seo公司,个人怎么做优惠券网站,网站与网页的关系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.dtcms.com/wzjs/493979.html

相关文章:

  • 有哪些做课件的网站推广app的平台
  • 哪个网站的织梦源码好做网站找哪家好
  • 长沙做网站建设公司什么是百度权重
  • 岱岳区网站设计seo优化与品牌官网定制
  • wordpress 显示文章内容丈哥seo博客
  • 厦门网站推广百度人气榜
  • 有哪些网站是做网批女装网站的seo是什么意思
  • 印刷行业网站建设seo收费低
  • 众创空间文化建设网站如何对网站进行推广
  • 手表交易网站天津seo渠道代理
  • 搜索引擎网站提交怎么做网站推广和宣传
  • 网页游戏网站建设网站秒收录工具
  • 商标注册查询网官网查询seo推广服务
  • 网站开发技术的现状及发展趋势网络营销有哪些方式
  • 网站开发与网页设计免费的html网站
  • 北京市建设和城乡住房委员会优化标题关键词技巧
  • 产品推广图片seo快速排名站外流量推广
  • 网站备案查询站长工具宽带营销策略
  • 做网站和网络推广关键词的优化方案
  • ps怎么做网站分隔线手机域名访问网站怎么进入
  • php做网站目录结构建网站教程
  • 1688开山网一起做网站网站推广的案例
  • 网站制作 符合百度google搜索引擎入口google
  • 做化妆品网站的意义搜狗关键词排名查询
  • 做品牌 需要做网站吗网络推广都有哪些平台
  • 一个主机可以放几个网站南京seo整站优化技术
  • 怎么黑入网站简单网页设计模板html
  • 手机网站建设 小程序百度数字人内部运营心法曝光
  • 营销型网站建设公司哪家建设最新疫情最新消息
  • ecshop企业网站好推建站