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 沉淀.分享.成长,让自己和他人都能有所收获! 一.承认你优秀很难 很多码农,把路走窄了 捧一个,喷一个,很多码农都不会多一点思路看问题,总是 ...
随机推荐
- docker容器-乌班图安装vim
apt-get update && apt-get install -y vim
- NC15065 小牛vs小客
题目链接 题目 题目描述 小牛和小客玩石子游戏,他们用n个石子围成一圈,小牛和小客分别从其中取石子,谁先取完谁胜,每次可以从一圈中取一个或者相邻两个,每次都是小牛先取,请输出胜利者的名字(小牛获胜输出 ...
- NC24961 Hotel
题目链接 题目 题目描述 The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and ...
- 【解决方案】Java 互联网项目如何防止集合堆内存溢出(一)
目录 前言 一.代码优化 1.1Stream 流自分页 1.2数据库分页 1.3其它思考 二.硬件配置 2.1云服务器配置 三.文章小结 前言 OOM 几乎是笔者工作中遇到的线上 bug 中最常见的, ...
- 【分布式】load balance 02-consistent hash algorithm 一致性哈希算法原理详解
负载均衡系列专题 01-负载均衡基础知识 02-一致性 hash 原理 03-一致性哈希算法 java 实现 04-负载均衡算法 java 实现 概念 一致哈希是一种特殊的哈希算法. 在使用一致哈希算 ...
- Keil MDK STM32系列(十) Ubuntu下的PlatformIO开发环境
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- SpringCloud服务注册与发现Eureka实战
介绍 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务 ...
- jenkins配置github秘钥
1.登录github,打开Settings 2.点击Developer settings 3.点击Personal access tokens-->Generate new token 4.勾选 ...
- 如何设置 vcpkg 依赖特定编译器
最近项目要部署到 gitlab-ci 上,所以远程机器上也要安装好编译环境 在相关的环境安装完后,发现编译项目时提示找不到三方库的符号文件 看到这个错误的第一反应就是依赖库的版本不对,因为远程机器上不 ...
- win32 - 使用GDI+播放gif图片
今天做case的时候遇到一个这样的问题,故记录下来. Codeproject有类似的案例,不过是使用的MFC模板编译的. 因为我们只需要win32程序,所以就....代码如下: CodeProject ...