安装Lombok--Lombok的常用注解说明及使用方法

news2024/11/28 18:43:05

😀前言
本篇博文是关于Lombok的基本介绍和基本使用,希望能够帮助到您😊

🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

文章目录

  • Lombok
    • Lombok 介绍
      • Lombok 作用
      • SpringBoot 和IDEA 官方支持
    • Lombok 常用注解
    • Lombok 应用实例
      • 代码实现
    • 😄总结

Lombok

Lombok 介绍

Lombok 作用

  1. 简化JavaBean 开发, 可以使用Lombok 的注解让代码更加简洁。
  2. Java 项目中,很多没有技术含量又必须存在的代码:POJO 的getter/setter/toString;异常处理;I/O 流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok应运而生。

SpringBoot 和IDEA 官方支持

  1. IDEA 2020 已经内置了Lombok 插件
  2. SpringBoot 2.1.x 之后的版本也在Starter 中内置了Lombok 依赖

Lombok 常用注解

image-20230809202549043

Lombok 应用实例

需求说明:使用Lombok 简化Furn.java 代码, 让代码简洁高效

代码实现

  1. 在pom.xml 引入lombok
<!-- 引入lombok, 版本在spring-boot-dependencies-2.5.3.pom 指定了, 把光标放在lombok ctrl+b 可以看到-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

-----------------------------------------看对应的版本---------------------------------------

image-20230809203628592

  1. 修改Furn.java 使用Lombok 注解简化代码, 提示:可以通过idea 自带的反编译功能, 看Furn.class 的源码, 就可以看到生成的完整代码.
/**
* 解读
* 1. @Component 将Furn 注册为一个组件
* 2. @ConfigurationProperties(prefix = "furn01") 指定在application.properties 前缀
* 这样Furn 组件就会属性文件中的值绑定了
*/
@Component
@ConfigurationProperties(prefix = "furn01")

/**
 * 说明:
 * 1. Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}
 * 2. @Data 注解等价使用了 如下注解 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode @NoArgsConstructor
 */
//@Data
//说明: @NoArgsConstructor 在编译时,会生成无参构造器, 前面说过,默认情况下,会生成一个无参构造器
//说明:当我们有其它构造器生成时,如果你希望仍然有无参构造器就需要使用@NoArgsConstructor指定一下 ,否则就会覆盖无参构造器,从而代码错误
@NoArgsConstructor
//说明:@AllArgsConstructor 在编译时,会生成全参构造器
@AllArgsConstructor
//@ToString : lombok 注解, 在编译时,生成toString, 默认情况下,会生成一个无参构造器
@ToString
@Setter
@Getter
public class Furn {

    private Integer id;
    private String name;
    private Double price;

}

image-20230809204626024

----------------反编译, 看源码-----------

@Component
@ConfigurationProperties(
    prefix = "furn01"
)
public class Furn {
    private Integer id;
    private String name;
    private Double price;

    public Furn() {
    }

    public Furn(final Integer id, final String name, final Double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    public String toString() {
        return "Furn(id=" + this.getId() + ", name=" + this.getName() + ", price=" + this.getPrice() + ")";
    }

    public void setId(final Integer id) {
        this.id = id;
    }

    public void setName(final String name) {
        this.name = name;
    }

    public void setPrice(final Double price) {
        this.price = price;
    }

    public Integer getId() {
        return this.id;
    }

    public String getName() {
        return this.name;
    }

    public Double getPrice() {
        return this.price;
    }
}

  1. 启动MainApp.java , 完成测试

image-20230809204711701

  1. 在idea 安装lombok 插件, 不装插件也可以用基本的注解,比如@Data @Getter 等, 但是不能使用其扩展功能, 比如日志输出…, 所以我们还是安装一下,也比较简单

image-20230809204742600

image-20230809204802025

安装完后重启一下idea就可以使用了。

  1. 演示使用Lombok 支持日志输出( 建议使用slf4j), 修改HelloController.java
@Slf4j
@Controller
public class HelloController {
    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
    	return "hello, spring boot";
    }
    
    @Autowired
    Furn furn;
    
    @RequestMapping("/furn")
    @ResponseBody
    public Furn furn() {
        //使用Slf4j日志输出
        //普通方式
        log.info("furn = " + furn);
        //占位用法
        log.info("furn = {} ", furn);
        return furn;
    }
}

image-20230809220353419

😄总结

  1. 使用Lombok 的注解可以让代码更加简洁。
  2. 使用Lombok 注解简化代码, 可以通过idea 自带的反编译功能, 看源码, 就可以看到生成的完整代码。
  3. 当我们使用@Data ,还有其它构造器生成时,无参构造器就需要使用@NoArgsConstructor指定一下 ,否则就会覆盖无参构造器,从而代码错误。
  4. 当使用@toString获取输出结果为空时,可能是因为没有get/set方法。

😁热门专栏推荐
SpringBoot篇
SpringBoot容器–注解的使用
SpringBoot 自动配置–常用配置
SpringBoot 依赖管理和自动配置—带你了解什么是版本仲裁
Spring Boot介绍–快速入门–约定优于配置

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/858091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

23款奔驰GLS450时尚型升级原厂香氛负离子系统,清香宜人,久闻不腻

奔驰原厂香氛合理性可通过车内空气调节组件营造芳香四溢的怡人氛围。通过更换手套箱内香氛喷雾发生器所用的香水瓶&#xff0c;可轻松选择其他香氛。香氛的浓度和持续时间可调。淡雅的香氛缓缓喷出&#xff0c;并且在关闭后能够立刻散去。车内气味不会永久改变&#xff0c;香氛…

将大容量机械硬盘克隆到固态硬盘的简单方法!

可以大容量机械硬盘克隆到固态硬盘吗&#xff1f; 随着硬盘使用时间增长&#xff0c;电脑的性能可能会下降。为了追求更快的读写速度&#xff0c;不少用户将目光投向了固态硬盘。 ​众所周知&#xff0c;固态硬盘的读写速度和启动速度比机械硬盘快。用固态硬盘替…

关于笔记本 win11系统出现的白屏闪烁问题

环境 windows 11 21H2 小新16pro笔记本起因 今天早上到公司&#xff0c;打开电脑后&#xff0c;发现电脑在登录后出现白屏闪烁的情况&#xff0c;闪烁是以下两张图反复更换&#xff1a; 看起来像是桌面程序出现问题&#xff0c;背景一会有一会没有的状况&#xff0c;通过Ctrl…

如何系列 如何使用Resilience4j提高应用弹性和容错

文章目录 背景简介Maven重试器注解式编程式配置事件监听指标监控健康检查 速率限制注解式编程式配置事件监听指标监控动态修改配置 断路器注解式配置 舱壁注解式 时间限制器多组件配合使用最佳实践 配置参考&#xff1a; 背景 在应用程序开发的过程中&#xff0c;特别是在构建…

力扣初级算法(旋转矩阵)

力扣初级算法(旋转矩阵) 每日一算法&#xff1a;旋转矩阵 学习内容&#xff1a; 1.问题&#xff1a; 给你一幅由 N N 矩阵表示的图像&#xff0c;其中每个像素的大小为 4 字节。请你设计一种算法&#xff0c;将图像旋转 90 度。 不占用额外内存空间能否做到&#xff1f; 2.…

React源码解析18(3)------ beginWork的工作流程【mount】

摘要 OK&#xff0c;经过上一篇文章。我们调用了&#xff1a; const root document.querySelector(#root); ReactDOM.createRoot(root)生成了FilberRootNode和HostRootFilber。 并且二者之间的对应关系也已经确定。 而下一步我们就需要调用render方法来讲react元素挂载在ro…

途乐证券-保险消费者信心延续恢复态势 健康险、意外险增购意愿上

今年以来&#xff0c;稳妥顾客决心延续调整康复态势。我国稳妥保证基金有限责任公司&#xff08;以下简称“稳妥保证基金公司”&#xff09;近来发布数据显现&#xff0c;2023年二季度&#xff0c;我国稳妥顾客决心指数为67.7&#xff0c;环比下降3.6&#xff0c;同比上升1.2&a…

一文读懂c++语言

一文读懂C语言 C的发展C的设计目标C的特性C的挑战 C的发展 C是一种通用的、高级的编程语言&#xff0c;它是C语言的扩展。C由Bjarne Stroustrup于1983年首次引入&#xff0c;并在之后的几十年中不断发展壮大。C被广泛应用于各种领域&#xff0c;包括系统开发、游戏开发、嵌入式…

keil显示中文代码正常,但是编译中文乱码的问题

Configuration---Editor---Encoding&#xff0c;ANSI或是UTF8&#xff0c;总之这2个&#xff0c;是A就改为U&#xff0c;是U就改为A。 MDK5中文编译乱码&#xff0c;不是显示乱码哦。

Android Camera预览画面变形问题

csdn 问题 安卓camera1在预览时&#xff0c;预览画面看起来被拉伸了&#xff0e; 如图&#xff0c;圆形的盖子&#xff0c;变成椭圆形了&#xff0e; 代码 默认流程&#xff0c;如下为大致的打开摄像头并进行预览显示的代码 private Camera mCamera null; private Surfa…

YOLOv5入门

模型检测 关键参数 weights:训练好的模型文件 source: 检测的目标&#xff0c;可以是单张图片、文件夹、屏幕或者摄像头等 conf-thres: 置信度闯值&#xff0c;越低框越多&#xff0c;越高框越少 iou-thres: IOU闻值&#xff0c;越低框越少&#xff0c;越少框越多 torch.hu…

windows安装apache-jmeter-5.6.2教程

目录 一、下载安装包&#xff08;推荐第二种&#xff09; 二、安装jmeter 三、启动jmeter 一、下载安装包&#xff08;推荐第二种&#xff09; 1.官网下载&#xff1a;Apache JMeter - Download Apache JMeter 2.百度云下载&#xff1a;链接&#xff1a;https://pan.baidu.…

vivo 场景下的 H5无障碍适配实践

作者&#xff1a;vivo 互联网前端团队- Zhang Li、Dai Wenkuan 随着信息无障碍的建设越来越受重视&#xff0c;开发人员在无障碍适配中也遇到了越来越多的挑战。本文是笔者在vivo开发H5项目做无障碍适配的实践总结。本文主要介绍了在前端项目中常用的无障碍手势和无障碍属性&am…

kubeadm安装

master&#xff08;2C/4G&#xff0c;cpu核心数要求大于2&#xff09; 192.168.223.71 node01&#xff08;2C/2G&#xff09; 192.168.223.72 node02&#xff08;2C/2G&#xff09; 192.168.223.73…

validator入门

validator中文文档地址和英文地址 https://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html/validator-gettingstarted.html https://docs.jboss.org/hibernate/validator/6.0/reference/en-US/html_single/#preface自定义hibernate-validator校验 工具类Valid…

基于SOM神经网络的柴油机故障诊断

1.案例背景 1.1 SOM神经网络概述 自组织特征映射网络(Self - Organizing Feature Map,SOM)也称Kohonen网络,它是由荷兰学者Teuvo Kohonen于1981年提出的。该网络是一个由全连接的神经元阵列组成的无教师、自组织、自学习网络。Kohonen认为,处于空间中不同区域的神经元有着不同…

别克VELITE 5增程式混动电动汽车变速箱解析

别克VELITE 5增程式电动汽车智能无极变速箱采用双电机双行星轮组的设计&#xff0c;相比其他技术具有更高的自由度&#xff0c;两个点击可同时参与驱动或单独发电&#xff0c;在内部集成的TPIM 模块的控制下&#xff0c;发动机与点击可同时100%参与驱动&#xff0c;变速范围更加…

嘉楠勘智k230开发板上手记录(二)--hello world

上次成功在k230上烧录sdk&#xff0c;这次准备实现hello world和ssh scp远程k230 主要是按照K230 SDK 基础教程的K230_实战基础篇_hello_world.md 一、PC连接k230 1. 初步准备 首先下载串口工具PuTTY&#xff0c;这个我个人感觉比较方便。 准备两根USB type-C数据线&#…

Vue + MapBox快速搭建

一、说明&#xff1a; 1.mapbox-gl自2.0版本开始不再开源&#xff0c;需要用户在官网申请key使用。 2.maplibre GL JS是一个开源库&#xff0c;它起源于 mapbox-gl-js 的开源分支。该库的初始版本&#xff08;1.x&#xff09;旨在替代Mapbox的OSS版本。简单来说maplibre是mapb…

老师如何设计一个实用的分班查询系统?

暑期过后&#xff0c;学校将迎来分班工作。有些是小升初需要分班&#xff0c;有些是高一升高二需要分班。对于老师来说&#xff0c;直接将分班结果发送到班级群&#xff0c;家长找不到结果时会发送信息询问&#xff0c;放假期间老师也需要时刻盯着手机。 不过&#xff0c;聪明…