SpringBoot中使用lombok

Lombok是一个Java库,通过注解简化JavaBean的编写,例如@Data、@Getter/@Setter、@NoArgsConstructor等。它减少了代码量,但可能影响代码可读性和调试。使用时需安装IDE插件,并注意对团队成员的要求和版本兼容性问题。

集成

  1. IDE安装Plugins插件=>lombok

  2. 添加maven依赖

     <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <optional>true</optional>
     </dependency>
    

使用

基本用来简化pojo使用@Data注解即可满足

  • @Data注解于类

    相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor注解

  • @Getter/@Setter注解于类

    为所有成员变量生成getter/setter

  • @Getter/@Setter注解于成员变量

    为该成员变量生成getter/setter并且可以设置访问权限和懒加载

      //lazy = true替代经典的Double Check Lock样板代码
      @Getter(value = AccessLevel.PRIVATE, lazy = true)
      @Setter(value = AccessLevel.PRIVATE)
    
  • @EqualsAndHashCode注解于类

    覆盖默认的equals()和hashCode()

  • @NonNull注解于成员变量

    标识不能为空,为空抛出空指针异常

  • @NoArgsConstructor注解于类

    生成无参构造函数

  • @RequiredArgsConstructor注解于类

    生成final和@NonNull的成员变量的构造函数

  • @AllArgsConstructor作用于类

    生成全参构造函数

  • @Builder作用于类

    将类变为建造者模式

  • @Log作用于类

    生成日志变量

  • @Cleanup InputStream is = new FileInputStream(new File(“”"));

    自动关闭资源

  • @SneakyThrows作用于方法

    捕捉并抛出受检异常,消除样板代码,用例如下;

    @SneakyThrows(UnsupportedEncodingException.class)
    public String utf8ToString(byte[] bytes) {
    	return new String(bytes, "UTF-8");
    }
    
  • @Synchronized注解于方法

    替换Synchronized关键字或lock锁

优缺点

  1. 优点

    • 使用注解极大减少代码量
  2. 缺点

    • 要求队友也要安装IDE插件
    • 降低代码可读性,增加调试成本
    • jdk或者IDE升级或者版本不一致可能会有影响
    • 需要清楚知道各个注解的具体操作
    • 如使用了@Data则破坏了封装性,因为会给私有属性自动生成public的读写方法
在Spring Boot项目使用Maven集成Lombok时,可能会遇到不同类型的报错,以下是针对不同报错的解决办法: ### spring-boot-maven-plugin报错 当改变Lombok版本后,spring-boot-maven-plugin可能会报错,提示 “Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found”。解决此问题可尝试修改spring-boot-maven-plugin的版本号,可直接寻找较高的稳定版本来解决 [^1]。 ### Maven Build Lombok报错 若Maven编译报错,提示找不到标记了@Data的类所自动生成的Getter方法和Setter方法,还可能出现无法在静态类中引用静态方法的错误,可通过配置Java编译参数来解决。使用 JDK 23 的特性进行编译时,通过 annotationProcessorPaths 定义 Lombok 的注解处理器路径,确保 Lombok 在编译时正确处理注解(如@Data、@Getter) [^2][^4]。示例配置如下: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>23</source> <target>23</target> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build> ``` ### 非Spring Boot框架Java项目使用lombok插件log报错 在非Spring Boot框架的Java项目中使用lombok插件 @Slf4j 注释时,log.info() 方法报错,原因是基于Spring Boot框架会默认加入 Slf4j-api 和 logback 依赖,非Spring Boot项目需要自己引入。依赖配置如下: ```xml <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值