Lombok、Spring-Initializer

1.Lombok

1.1Lombok介绍

  1. Lombok的作用是:

    • 简化Javabean的开发,可以使用Lombok的注解让代码更加简洁
    • Java项目中,很多没有技术含量又必须存在的代码:比如POJO类的getter、setter、toString方法;异常处理;IO流的关闭操作等等。这些代码既没有技术含量又影响着代码的美观,因此Lombok应运而生。
  2. SpringBoot和IDEA的官方支持
    • IDEA2020已经内置了Lombok插件
    • SpringBoot2.1.x之后的版本也在Starter中内置了Lombok依赖

1.2Lombok常用注解

https://www.modb.pro/db/138770

https://www.cnblogs.com/zwbsoft/p/16124806.html

注解 解释
@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.安装插件

  1. 不安装插件也可以使用基本的注解,比如@Data,@Getter等
  2. 但是不能使用其扩展功能,比如日志输出

演示使用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的作用

  1. 程序员通过Maven Archetype 来生成Maven项目,项目原型相对简陋,需要手动配置,比较灵活。
  2. 通过Spring官方提供的Spring Initializer来构建Maven项目,能完美支持IDEA和Eclipse,让程序员来选择需要的开发场景(starter),还能自动生成自动类和单元测试代码
  3. 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的更多相关文章

  1. Java-Idea-笔记:lombok、微信支付依赖

    ylbtech-Java-Idea-笔记:lombok.微信支付依赖 1. idea-install-lombok返回顶部 1.0. P:问题描述Idea每打开一个类文件,类名就标红,不影响运行,但g ...

  2. 大数据学习--day05(嵌套循环、方法、递归)

    嵌套循环.方法.递归 图形打印 public static void main(String[]arg) { /** * * * * * * */ // 3 2 1 0 // 1 3 5 for(in ...

  3. Day05:访问控制 、 static和final

    访问控制 package(包) 什么是包? 组织java文件的一个单位 为什么需要包? 将相关的java文件组织在一个包里 将项目中同名的类,方法在不同包中,不会冲突 注意: 包名全部小写,如果多个单 ...

  4. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...

  5. WebFlux01 webflux概念、异步servlet、WebFlux意义

    1 概念 待更新...... 2 异步servlet 2.1 同步servlet servlet容器(如tomcat)里面,每处理一个请求会占用一个线程,同步servlet里面,业务代码处理多久,se ...

  6. SpringBoot16 MockMvc的使用、JsonPath的使用、请求参数问题、JsonView、分页查询参数、JsonProperty

    1 MockMvc的使用 利用MockMvc可以快速实现MVC测试 坑01:利用MockMvc进行测试时应用上下文路径是不包含在请求路径中的 1.1 创建一个SpringBoot项目 项目脚手架 1. ...

  7. (七) SpringBoot起飞之路-整合SpringSecurity(Mybatis、JDBC、内存)

    兴趣的朋友可以去了解一下前五篇,你的赞就是对我最大的支持,感谢大家! (一) SpringBoot起飞之路-HelloWorld (二) SpringBoot起飞之路-入门原理分析 (三) Sprin ...

  8. Java 项目创建 -- 统一结果处理、统一异常处理、统一日志处理

    一.IDEA 插件使用 1.说明 此处使用 SpringBoot 2.2.6 .JDK 1.8 .mysql 8.0.18 作为演示. 使用 IDEA 作为开发工具. 2.IDEA 插件 -- Lom ...

  9. FastJSON解析Json字符串(反序列化为List、Map)

    在日常开发与数据库打交道的时候,常有以Json格式的字符串存储到数据库的情况,当在Java程序中获取到对应的Json格式的String字符串后,如何才能转换为我们想要的数据格式(比如转换成Java中的 ...

  10. 一款 IDEA 插件帮你优雅转化 DTO、VO、BO、PO、DO

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.承认你优秀很难 很多码农,把路走窄了 捧一个,喷一个,很多码农都不会多一点思路看问题,总是 ...

随机推荐

  1. Windows安装MongoDB6.0.2

    环境 Windows 10 MongoDB 6.0.2 配置 下载mongodb 下载地址:https://www.mongodb.com/try/download/community 安装 指定目录 ...

  2. Docker从认识到实践再到底层原理(九)|Docker Compose 容器编排

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...

  3. Adoquery.Refresh 慎用。。。。非常严重,会带来各种问题。

    adoquery.refresh 各种问题,根本启不到刷新的作用.完全不刷新的节奏. 修改成已经打印后,如果用adoquery.refresh的话,这两个订单 并不会被刷新掉,惨吧......

  4. Kafka-生产者、broker、消费者的调优参数总结

    生产环境下,为了尽可能提升Kafka的整体吞吐量,可以对Kafka的相关配置参数进行调整,以达到提升整体性能的目的. 本文主要从Kafka的不同组件出发,讲解各组件涉及的配置参数和参数含义. 一.生产 ...

  5. webpack学习笔记(二)核心概念理解及基础配置

    上一篇文章 记录了 webpack 初次安装与基础使用,本篇则是记录一下如何使用webpack构建一个比较完整,基础的项目 1. webpack 的4个核心概念 入口(entry):选择项目构建的入口 ...

  6. NC15976 小C的周末

    题目链接 题目 题目描述 愉快的周末到了,小C和他的N-1个朋友买了M个游戏,游戏编号从1~M.每个游戏都是多人游戏,他们打算周末一起打游戏. 小C的每个朋友都决定好了要玩哪一款游戏(会有一组人打同一 ...

  7. Educational Codeforces Round 136 (Rated for Div. 2) A-E

    比赛链接 A 题解 知识点:模拟. 所有点都跑一遍即可. 另外可以不模拟, \(\geq 2*2\) 的情况都可以摆在 \((2,2)\) 这个点,其他摆在 \((1,1)\) . 时间复杂度 \(O ...

  8. NC50500 凸多边形的划分

    题目链接 题目 题目描述 给定一个具有N个顶点的凸多边形,将顶点从1至N标号,每个顶点的权值都是一个正整数.将这个凸多边形划分成N-2个互不相交的三角形,试求这些三角形顶点的权值乘积和至少为多少. 输 ...

  9. Linux进程通信 | 信号

    一.什么是信号? 信号就像是一个突然的电话铃声,它会打断正在进行的程序并引起其注意. 在Linux系统中,信号是一种软件中断,它通常是异步发生的,可以用来通知进程某个事件已经发生..每个信号都有一个唯 ...

  10. sensitive-word 敏感词/脏词开源工具-v.0.10.0-脏词分类标签支持

    sensitive-word sensitive-word 基于 DFA 算法实现的高性能敏感词工具. 创作目的 实现一款好用敏感词工具. 基于 DFA 算法实现,目前敏感词库内容收录 6W+(源文件 ...