后端开发:这5个技巧让你少写一半代码!

告别重复劳动,用Lombok解放你的双手------原来高效编码的秘密武器就藏在这几个注解里!

刚开始学java的同仁们肯定在培训班写过无数个gettersettertoString的。但是这也是不可避免的,肯定得从基础的学起来,等到完全熟悉了以后,这边给初学的各位推荐一个Lombok"神器"------代码量肉眼可见地少了一半!今天就分享5个搬砖效率的Lombok技巧,,看完你绝对会内心非常高兴并且拍大腿大喊:"早该用它了!"


技巧1:@Builder ------ 告别构造器

场景:每次new一个复杂对象,都要写一长串构造参数,顺序错了还容易崩!

Lombok解法 :一个@Builder注解,直接开启流式构造(Builder模式)!

java 复制代码
import lombok.Builder;

@Builder
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

// 实际使用:链式调用,清晰又防错!
public class Main {
    public static void main(String[] args) {
        User user = User.builder()
                        .id(1L)
                        .name("张三")
                        .age(25)
                        .email("zhangsan@example.com")
                        .build(); // 最终构造
        
        System.out.println(user); 
        // 输出: User(id=1, name=张三, age=25, email=zhangsan@example.com)
    }
}

效果:再也不用记参数顺序,避免手抖写错字段,代码可读性直线上升!


技巧2:@Slf4j ------ 日志注入,一行搞定

场景 :每个类开头都要写private static final Logger log = LoggerFactory.getLogger(...);,烦不烦?

Lombok解法 :类上加@Slf4j,直接使用log对象打日志!

java 复制代码
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class OrderService {

    public void createOrder() {
        log.info("订单创建开始...");
        try {
            // 业务代码...
            log.debug("订单参数校验通过");
        } catch (Exception e) {
            log.error("创建订单失败!", e);
        }
    }
}

// 无需再写:private static final Logger log = ... 

效果:省掉重复声明,专注写业务日志,效率++!


技巧3:@SneakyThrows ------ 偷偷抛出异常,不用你声明

场景 :写个简单IO操作,非要加throws IOException,或者用try-catch包成粽子!

Lombok解法@SneakyThrows帮你"偷偷"抛出受检异常,代码瞬间清爽。

java 复制代码
import lombok.SneakyThrows;
import java.nio.file.Files;
import java.nio.file.Paths;

public class FileReader {

    @SneakyThrows // 重点!自动处理IOException
    public String readFile(String path) {
        byte[] bytes = Files.readAllBytes(Paths.get(path));
        return new String(bytes);
    }
}

// 调用时:无需处理异常,Lombok在编译期帮你加了try-catch!

效果:简化异常处理,尤其适合写工具类、测试代码,但生产环境慎用复杂逻辑!


技巧4:val ------ 局部变量类型推断,写Java像写Kotlin

场景 :明明右边知道类型,左边还要啰嗦写一遍Map<String, List<Integer>> map = ...

Lombok解法 :用val声明局部变量,自动推断类型!(类似JS的const)

java 复制代码
import lombok.val;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ValExample {
    public static void main(String[] args) {
        val name = "李四"; // 自动推断为String
        val list = new ArrayList<String>(); // 推断为ArrayList<String>
        list.add("Java");
        list.add("Lombok");
        
        val map = new HashMap<String, List<Integer>>(); // 复杂类型也支持
        map.put("scores", List.of(90, 85, 92));
        
        System.out.println(name + " 的技能: " + list); 
        // 输出:李四 的技能: [Java, Lombok]
    }
}

效果:大幅减少冗余类型声明,尤其在泛型嵌套时,谁用谁知道!


技巧5:@Data

场景 :实体类里全是getXXX()setXXX()toString()equals()... 等等等等!

Lombok解法@Data = @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor

java 复制代码
import lombok.Data;

@Data // 一个注解顶五个!
public class Product {
    private Long id;
    private String name;
    private Double price;
    private Integer stock;
}

// 测试:
public class Test {
    public static void main(String[] args) {
        Product product = new Product();
        product.setId(1001L);
        product.setName("无线鼠标");
        product.setPrice(89.9);
        
        System.out.println(product); 
        // 输出: Product(id=1001, name=无线鼠标, price=89.9, stock=null)
        
        Product p2 = new Product();
        p2.setId(1001L);
        System.out.println(product.equals(p2)); // 输出: true (比较id)
    }
}

效果:一个注解生成全套POJO方法,写实体类从此飞快!


总结:少写代码,多写逻辑

用了Lombok后,我最大的感受是:

代码量少了,逻辑更清晰了,加班也少了(老板:?)

这5个技巧是我在真实项目中高频使用的"黄金组合":

  1. @Builder → 优雅构造对象
  2. @Slf4j → 日志注入神器
  3. @SneakyThrows → 异常处理隐身
  4. val → 局部变量类型推断
  5. @Data → POJO终极偷懒

重要提示:Lombok需要IDE安装插件支持(IDEA搜索安装Lombok插件),项目引入依赖:

在pom.xml中配置了以后才能用

下图红框中的这些就是我们日常经常用的注解了!

所以以后不用再手动写那些重复代码了!用好Lombok,把时间省下来去摸鱼... 啊不,去写更核心的业务逻辑吧!


相关推荐
㳺三才人子2 小时前
初探 Flask
后端·python·flask·html
星栈独行2 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
Lei活在当下2 小时前
先用起来,再理解,关于协程Coroutine应该知道的事
android·java·jvm
Java爱好狂.2 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
陈随易3 小时前
Redis 8.8发布,一定要更新
前端·后端·程序员
tongluowan0073 小时前
以ReentrantLock为例解释AQS的工作流程
java·模板方法模式·aqs·reentrantlock
装不满的克莱因瓶3 小时前
SpringBoot 如何将 lib 目录中jar包打包进最终的jar包里面
spring boot·后端·maven·jar·mvn
ltl4 小时前
Transformer 原论文实验结果:为什么 28.4 BLEU 足以改写路线图
后端
身如柳絮随风扬4 小时前
Java 项目打包与部署完全指南:JAR vs WAR,从构建到运行
java·firefox·jar
云烟成雨TD4 小时前
Spring AI Alibaba 1.x 系列【62】时光旅行(Time-Travel)
java·人工智能·spring