简化javabean开发-->Lombok

news2024/10/7 10:24:37

目录

一.Lombok

1.Lombok 介绍

1.1Lombok 作用

1.2SpringBoot 和 IDEA 官方支持

2.Lombok 常用注解

3.Lombok 应用实例 

3.1在 pom.xml 引入 lombok

3.2. 修改 Furn.java

3.3在 idea 安装 lombok 插件


一.Lombok

1.Lombok 介绍

1.1Lombok 作用

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

1.2SpringBoot IDEA 官方支持

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

2.Lombok 常用注解

3.Lombok 应用实例 

3.1在 pom.xml 引入 lombok

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

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

 

3.2. 修改 Furn.java

使用 Lombok 注解简化代码, 提示:可以通过 idea 自带的反编译功, Furn.class 的源码, 就可以看到生成的完整代码

@Component
@ConfigurationProperties(prefix = "furn01")
//@ToString //在编译时,生成toString, 默认情况下,会生成一个无参构造器
/**
 * 说明:
 * 1. Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}
 * 2. @Data 注解等价使用了 如下注解 @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode
 * 3. @RequiredArgsConstructor : 单独的说一下:
 */
//@Data
//说明: @NoArgsConstructor 在编译时,会生成无参构造器, 前面老师说过,默认情况下,会生成一个无参构造器
//说明:当我们有其它构造器生成时,如果你希望仍然有无参构造器就需要使用@NoArgsConstructor指定一下
//        ,否则就会覆盖无参构造器,从而代码错误
@NoArgsConstructor
//说明:@AllArgsConstructor 在编译时,会生成全参构造器
@AllArgsConstructor
@ToString
@Setter
@Getter//时json获取数据的主要方法get方法,因为json底层使用的是getId等等方法
public class Furn {
    private Integer id;
    private String name;
    private Double price;


}

 

3.3在 idea 安装 lombok 插件

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

 

5. 演 示 使 用 Lombok 支 持 日 志 输 出 ( 建 议 使 用 slf4j),


import com.hong.springboot.bean.Furn;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

/**
 * @author 海绵hong
 * @version 1.0
 */
@Slf4j
@Controller
public class HiController {

    //需求website 属性值从application.properties 的k-v
    @Value("${my.website}")
    private String website;

    //装配到HiController
    @Resource
    private Furn furn;

    //返回hi,springboot
    @RequestMapping("/hi")
    @ResponseBody
    public String hi() {
        System.out.println("website-" + website);
        return "hi~, SpringBoot";
    }

    @RequestMapping("/furn")
    @ResponseBody
    public Furn furn() {
        //System.out.println("furn--" + furn);
        //使用slf4j日志输出
        //普通方式
        log.info("furn-" + furn);
        //占位符方式输出
        log.info("furn={} myfurn={}", furn, furn);
        return furn;
    }

}

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

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

相关文章

Camtasia2023喀秋莎录屏软件下载操作教程

Camtasia软件2023最新版是一款电脑屏幕录制与视频剪辑的软件&#xff0c;功能强大且操作简单。可以使用该软件对视频进行添加滚动字幕的效果&#xff0c;并且还可以选择注释标注的样式、主题以及形状等。在内置的视频编辑器中对视频进行剪辑时还可以拖放文本、添加效果、添加过…

VTK-vtkImplicitFunction及其子类介绍

简介&#xff1a;本文主要介绍vtkImplicitFunction接口及其子类的实现原理和用途。 目录 1. vtkPlane 2. vtkPolyPlane 1. vtkPlane 描述&#xff1a;vtkPlane提供了各种平面的计算方法&#xff0c;包括点到面的投影&#xff0c;计算点到面的距离及面的法向量等。 Evaluat…

解析分布式数据库的技术框架及其在金融行业中的应用规划

早期银行业务系统处理的主要是交易型数据,数据量较少,传统关系型数据库(如Oracel、DB2等)已足够应对。随着互联网金融业务的快速发展,业务系统需要处理的数据呈爆炸式增长,传统数据库无法满足业务系统越来越高的数据处理能力要求。于是,新型的分布式数据库系统应运而生。…

Linux安装Redis 手把手教程

文章目录安装步骤1. 创建安装目录/usr/local/redis2. 进入安装包目录3. 编译环境准备&#xff1a;4. 下载redis 源码包5. 解压文件6. 进入到解压好的redis-5.0.2目录下&#xff0c;进行编译与安装7. 启动并指定配置文件8. 配置允许远程连接&#xff08;选做&#xff09;9. 启动…

文献|敬畏这种情绪,居然可以让世界变得更美好

Hello&#xff0c;大家好~ 这里是壹脑云科研圈&#xff0c;我是青书~ 在介绍今天推荐的文献之前&#xff0c;要先和大家宣布一个非常棒的消息&#xff0c;我们的第二季21天情绪文献对赌营圆满结营啦~ 在本期活动里&#xff0c;各位参加的小伙伴都有属于自己的收获&#xff1…

容器基础镜像的编写及最佳实践

1 基本概念 1.1 Docker系统组成 整体Docker的系统包括以下主要组成部分,包括Dockerclient、Dockerdaemon、Docker registry、Docker镜像、Docker容器,他们之间的关系如下图: Docker架构主要分为客户端和服务端,客户端负责发起请求,服务端负责接受,解析和处理请求,图示中…

【Linux】操作题大全

目录 1.若下达 # rmdir test 命令来删除某个已存在的目录&#xff0c;但无法成功&#xff0c;请说明可能的原因 2.请用shell中的while循环输出1-100的和 两种执行bash文件的方法 3. 请用shell中的for循环输出1-100 4.请用shell中的while循环输出1-100 5.计算输入的参数1和参…

jquery中 offset()计算的偏移量 和 原生Dom计算的偏移量不一致;

目录 一、问题 二、原因及解决方法 三、总结 一、问题 1.需求&#xff1a;有一个表格&#xff0c;单元格宽度不相等&#xff0c;单元格上面覆盖着一个input输入框。想要通过相对位置计算 输入框到底在表格的第几列。 思路&#xff1a;通过循环表格第一行单元格计算左边偏移…

Twitter群推王:推特全方位营销利器

Twitter群推王是专为Twitter运营提供的一款全方位营销工具&#xff0c;可以自动发帖、自动私信、自动转发、自动关注、自动点赞、自动改资料、自动注册、数据采集等&#xff0c;解决营销中的三大难题&#xff1a;账号问题、同一Ip环境问题、批量自动化问题&#xff0c;是个人、…

【数据结构Note4】-串、数组和广义表(kmp算法详解)

串、数组和广义表 顺序表和链表分别是线性表的两种存储结构。 栈和队列是操作受限的线性表。 串、数组和广义表是内容受限的线性表。 1. 串 1.1 串的概念和结构 串&#xff08;String&#xff09;—零个或多个任意字符组成的有限序列 所谓串是内容受限的线性表。就是要求该线性…

[ 常用工具篇 ] 解决kali英文操作不方便的问题 -- kali 设置中文界面

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

iNFTnews|FTX一夜崩塌,但Web3仍前途光明

元宇宙的日子越来越不好过了。 FTX的暴雷仍在产生广泛的影响&#xff0c;以太坊的价格快跌到1000美元了&#xff0c;这与去年11月4900美元的历史新高形成鲜明对比。 不过&#xff0c;尽管市场低迷&#xff0c;创作者仍然在Web3领域找到了爱与支持&#xff0c;甚至是可持续发展…

正则表达式快速入门

目录1.正则表达式是什么&#xff0c;有什么作用2.定位符例子2.1想要搜索以“001”开头的文件2.2想要搜索以“ab”结尾的文件2.3搜索单词开头为“zh"的文件2.4搜索单词结尾为“zh"的文件2.5搜索单词中间为“zh"的文件3.限定符例子3.1 搜索以“0”开头&#xff0c…

【Call for papers】DSN-2023(CCF-B/软件工程/2022年12月7日截稿)

文章目录1.会议信息2.时间节点3.论文主题On behalf of the Organizing Committee, we extend you a warm welcome to the 53rd Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN 2023), organized by the University of Coimbra, Portugal.…

MyBatis-Plus 联表查询

文章目录前言引入依赖数据准备修改 Mapper查询分页查询前言 它的联表查询能力一直被大家所诟病。一旦遇到 left join 或 right join 的左右连接&#xff0c;你还是得老老实实的打开 xml 文件&#xff0c;手写上一大段的 sql 语句。 直到前几天&#xff0c;偶然碰到了这么一款…

麻了,3个offer不知道选哪个?

有的小伙伴苦于没offer&#xff0c;有的小伙伴苦于offer多&#xff0c;不知道选择哪个&#xff1f; 本科双非&#xff0c;硕士末端985&#xff0c;拿到了三个offer&#xff0c;过来问小孟去哪&#xff1f; 一&#xff0c;拿到三个不错的offer&#xff1a; 三个offer分别是阿里…

JDK8新特性之Stream流

目录 集合处理数据的弊端 Stream流的获取方式 对于Collection的实现类 对于Map 对于数组 Stream常用方法介绍 count forEach filter limit skip map sorted distinct match find max和min reduce mapToInt concat Stream结果收集 结果收集到集合中 结果收…

分布式定时调度-xxl-job

分布式定时调度-xxl-job 一.定时任务概述 1.定时任务认识 1.1.什么是定时任务 定时任务是按照指定时间周期运行任务。使用场景为在某个固定时间点执行&#xff0c;或者周期性的去执行某个任务&#xff0c;比如&#xff1a;每天晚上24点做数据汇总&#xff0c;定时发送短信等。 …

Android中Adapter的作用

Adapter的介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making aView for each item in the data set. 一个Adapter是Ada…

关于 SAP Cloud Connector 500 failed to sign the Certificate 的错误消息

有朋友向我询问一个关于 SAP Cloud Connector 的问题&#xff0c;错误消息如下&#xff1a; 500 failed to sign the Cloud Connector Certificate for subaccount XXX. Verify Configuration and proxy settings. See Log And Trace Files and in particular ljs_trace.log fo…