day05-Lombok、SpringInitializer
Lombok、Spring-Initializer
1.Lombok
1.1Lombok介绍
- Lombok的作用是:
- 简化Javabean的开发,可以使用Lombok的注解让代码更加简洁
- Java项目中,很多没有技术含量又必须存在的代码:比如POJO类的getter、setter、toString方法;异常处理;IO流的关闭操作等等。这些代码既没有技术含量又影响着代码的美观,因此Lombok应运而生。
- SpringBoot和IDEA的官方支持
- IDEA2020已经内置了Lombok插件
- SpringBoot2.1.x之后的版本也在Starter中内置了Lombok依赖
1.2Lombok常用注解
| 注解 | 解释 |
|---|---|
| @Data | 只能标注到类上,综合@Getter、@Setter、@RequiredArgsConstructor @ToString、@EqualsAndHashCode五个注解的功能。 |
| @Setter | 可标注到类或属性上,标注到类上表示此类中的所有属性生成setter方法,标注到某个属性上,表示此属性生成setter方法。 |
| @Getter | 可标注到类或属性上,标注到类上表示此类中的所有属性生成getter方法,标注到某个属性上,表示此属性生成getter方法。 |
| @Log4j | 注解在类上,为类提供一个属性名为log的log4j日志对象 |
| @NoArgsConstructor | 只能标注到类上,生成无参的构造方法。 |
| @AllArgsConstructor | 只能标注到类上,生成包含所有属性的构造方法,使用此注解时建议和@NoArgsConstructor结合使用,否则此类将没有无参的构造方法。 |
| @RequiredArgsConstructor | 写在类上可以代替@AutoWired注解,需要注意的是在注入时需要用final定义,或者使用@notnull注解 |
| @Cleanup | 可以关闭流 |
| @Builder | 被注解的类加个构造者模式 |
| @Synchronized | 加同步锁 |
| @SneakyThrows | 等同于try/catch捕获异常 |
| @NonNull | 如果修饰于参数,当参数为null时会抛出空指针异常 |
| @Value | 只能标注到类上,综合@Getter,@Setter,@ToString,@EqualsAndHashCode,@NoArgsConstructor五个注解的功能,和@Data不同的是,默认将所有属性定义成final的,也就是只会生成getter方法,不会生成setter方法,如果不需要final,则给属性加上@NonFinal注解即可。 |
3.应用实例
(1)使用Lombok要先引入相关库

<!--引入Lombok,使用版本仲裁-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
(2)User.java
package com.li.springboot.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @author 李
* @version 1.0
*/
//@ToString //在编译时,生成toString方法,默认情况下也会生成一个无参构造器
//@Data //等价于@Getter+@Setter+@RequiredArgsConstructor+@ToString+@EqualsAndHashCode
//@NoArgsConstructor //编译时会生成无参构造器,它的意义在于显式定义,防止会有参构造器覆盖
//@AllArgsConstructor //编译时生成全参构造器(注意如果没有声明无参构造器时,全参构造器会覆盖它)
public class User {
private Integer id;
private String name;
private String address;
}
4.安装插件
- 不安装插件也可以使用基本的注解,比如@Data,@Getter等
- 但是不能使用其扩展功能,比如日志输出

演示使用Lombok-@Slf4j
(1)User.java
package com.li.springboot.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.stereotype.Component;
/**
* @author 李
* @version 1.0
*/
@Component
@ToString
@Getter
@Setter
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private String address;
}
(2)控制器
package com.li;
import com.li.springboot.bean.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
/**
* @author 李
* @version 1.0
*/
@Slf4j
@Controller
public class HiController {
@Resource
private User user;
@RequestMapping("/user")
@ResponseBody
public User user() {
//使用@Slf4j日志输出
//普通方式输出:
log.info("user="+user);
//占位符方式输出:
log.info("user={},myuser={}",user,user);
return user;
}
}
注意,如果以json格式返回,那么Javabean中需要设置Getter和Setter方法。


2.Spring-Initializer
2.1Spring Initializer介绍
Spring Initializer的作用
- 程序员通过Maven Archetype 来生成Maven项目,项目原型相对简陋,需要手动配置,比较灵活。
- 通过Spring官方提供的Spring Initializer来构建Maven项目,能完美支持IDEA和Eclipse,让程序员来选择需要的开发场景(starter),还能自动生成自动类和单元测试代码
- Spring Initializer对IDEA版本有要求,还需要注意网络问题
2.2使用演示
演示使用Spring-Initializer创建SpringBoot项目,并支持web应用场景,支持mybatis
2.2.1方式1-IDEA创建
(1)File-New-Project 创建项目
(2)选择Spring Initializer(如果没有看到这个选项,需要安装Spring Initializer插件)

(3)选择版本和依赖

(4)项目创建好之后自动生成启动类和单元测试代码

2.2.2方式2-官网创建下载
(1)直接到官网去创建项目然后下载

(2)下载完毕,使用idea打开,它的结构和方式一生成的一样

2.3注意事项和使用细节
如果通过Spring Initializer创建的pom.xml文件报错,可能是版本问题。解决方式是:指定版本和当前的SpringBoot一致,再刷新maven即可解决
day05-Lombok、SpringInitializer的更多相关文章
- Java-Idea-笔记:lombok、微信支付依赖
ylbtech-Java-Idea-笔记:lombok.微信支付依赖 1. idea-install-lombok返回顶部 1.0. P:问题描述Idea每打开一个类文件,类名就标红,不影响运行,但g ...
- 大数据学习--day05(嵌套循环、方法、递归)
嵌套循环.方法.递归 图形打印 public static void main(String[]arg) { /** * * * * * * */ // 3 2 1 0 // 1 3 5 for(in ...
- Day05:访问控制 、 static和final
访问控制 package(包) 什么是包? 组织java文件的一个单位 为什么需要包? 将相关的java文件组织在一个包里 将项目中同名的类,方法在不同包中,不会冲突 注意: 包名全部小写,如果多个单 ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...
- WebFlux01 webflux概念、异步servlet、WebFlux意义
1 概念 待更新...... 2 异步servlet 2.1 同步servlet servlet容器(如tomcat)里面,每处理一个请求会占用一个线程,同步servlet里面,业务代码处理多久,se ...
- SpringBoot16 MockMvc的使用、JsonPath的使用、请求参数问题、JsonView、分页查询参数、JsonProperty
1 MockMvc的使用 利用MockMvc可以快速实现MVC测试 坑01:利用MockMvc进行测试时应用上下文路径是不包含在请求路径中的 1.1 创建一个SpringBoot项目 项目脚手架 1. ...
- (七) SpringBoot起飞之路-整合SpringSecurity(Mybatis、JDBC、内存)
兴趣的朋友可以去了解一下前五篇,你的赞就是对我最大的支持,感谢大家! (一) SpringBoot起飞之路-HelloWorld (二) SpringBoot起飞之路-入门原理分析 (三) Sprin ...
- Java 项目创建 -- 统一结果处理、统一异常处理、统一日志处理
一.IDEA 插件使用 1.说明 此处使用 SpringBoot 2.2.6 .JDK 1.8 .mysql 8.0.18 作为演示. 使用 IDEA 作为开发工具. 2.IDEA 插件 -- Lom ...
- FastJSON解析Json字符串(反序列化为List、Map)
在日常开发与数据库打交道的时候,常有以Json格式的字符串存储到数据库的情况,当在Java程序中获取到对应的Json格式的String字符串后,如何才能转换为我们想要的数据格式(比如转换成Java中的 ...
- 一款 IDEA 插件帮你优雅转化 DTO、VO、BO、PO、DO
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.承认你优秀很难 很多码农,把路走窄了 捧一个,喷一个,很多码农都不会多一点思路看问题,总是 ...
随机推荐
- Windows安装MongoDB6.0.2
环境 Windows 10 MongoDB 6.0.2 配置 下载mongodb 下载地址:https://www.mongodb.com/try/download/community 安装 指定目录 ...
- Docker从认识到实践再到底层原理(九)|Docker Compose 容器编排
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- Adoquery.Refresh 慎用。。。。非常严重,会带来各种问题。
adoquery.refresh 各种问题,根本启不到刷新的作用.完全不刷新的节奏. 修改成已经打印后,如果用adoquery.refresh的话,这两个订单 并不会被刷新掉,惨吧......
- Kafka-生产者、broker、消费者的调优参数总结
生产环境下,为了尽可能提升Kafka的整体吞吐量,可以对Kafka的相关配置参数进行调整,以达到提升整体性能的目的. 本文主要从Kafka的不同组件出发,讲解各组件涉及的配置参数和参数含义. 一.生产 ...
- webpack学习笔记(二)核心概念理解及基础配置
上一篇文章 记录了 webpack 初次安装与基础使用,本篇则是记录一下如何使用webpack构建一个比较完整,基础的项目 1. webpack 的4个核心概念 入口(entry):选择项目构建的入口 ...
- NC15976 小C的周末
题目链接 题目 题目描述 愉快的周末到了,小C和他的N-1个朋友买了M个游戏,游戏编号从1~M.每个游戏都是多人游戏,他们打算周末一起打游戏. 小C的每个朋友都决定好了要玩哪一款游戏(会有一组人打同一 ...
- Educational Codeforces Round 136 (Rated for Div. 2) A-E
比赛链接 A 题解 知识点:模拟. 所有点都跑一遍即可. 另外可以不模拟, \(\geq 2*2\) 的情况都可以摆在 \((2,2)\) 这个点,其他摆在 \((1,1)\) . 时间复杂度 \(O ...
- NC50500 凸多边形的划分
题目链接 题目 题目描述 给定一个具有N个顶点的凸多边形,将顶点从1至N标号,每个顶点的权值都是一个正整数.将这个凸多边形划分成N-2个互不相交的三角形,试求这些三角形顶点的权值乘积和至少为多少. 输 ...
- Linux进程通信 | 信号
一.什么是信号? 信号就像是一个突然的电话铃声,它会打断正在进行的程序并引起其注意. 在Linux系统中,信号是一种软件中断,它通常是异步发生的,可以用来通知进程某个事件已经发生..每个信号都有一个唯 ...
- sensitive-word 敏感词/脏词开源工具-v.0.10.0-脏词分类标签支持
sensitive-word sensitive-word 基于 DFA 算法实现的高性能敏感词工具. 创作目的 实现一款好用敏感词工具. 基于 DFA 算法实现,目前敏感词库内容收录 6W+(源文件 ...