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. 音乐播放器 — 用 vant4 中的滑块自定义播放器进度条

    一.运行效果 二.代码实现 2.1.HTML: <!-- 音频播放器 --> <audio ref="audio" src="音乐名称.mp3" ...

  2. css 修改复选框的样式

    效果图: 实现代码如下: /* 选中input标签类型为复选框的 */ input[type="checkbox"] { width: 16px; height: 16px; ve ...

  3. 小型命令解析器|minShell|多进程|重定向|进程控制【超详细的代码注释和解释】

    前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://blog.csdn.net/yu_cblog/category_11490888.html?spm=1001.2014. ...

  4. 单片机 IAP 功能进阶开发篇之BOOT升级(一)

    引言 目的 主要介绍单片机 IAP 开发的设计思路,如何不使用下载烧录器的方式对单片机的程序进行升级,升级区域包括 bootloader 和用户程序的升级,升级方式有 UASRT 通信.CAN 通信和 ...

  5. ASP.NET Core分布式项目实战(运行Consent Page)--学习笔记

    任务21:运行Consent Page 修改 Config.cs 中的 RequireConsent 为 true,这样登录的时候就会跳转到 Consent 页面 修改 ConsentControll ...

  6. Windows 10 快捷键大全|日常办公效率加倍

    ## 复制.粘贴及其他常规     Ctrl + X 剪切选定项. Ctrl + C(或 Ctrl + Insert) 复制选定项. Ctrl + V(或 Shift + Insert) 粘贴选定项. ...

  7. NC24858 [USACO 2009 Nov S]Job Hunt

    题目链接 题目 题目描述 Bessie is running out of money and is searching for jobs. Farmer John knows this and wa ...

  8. 【framework】ATMS启动流程

    1 前言 ​ ATMS 即 ActivityTaskManagerService,用于管理 Activity 及其容器(任务.堆栈.显示等).ATMS 在 Android 10 中才出现,由原来的 A ...

  9. Js中的位操作符

    Js中的位操作符 JavaScript的数字类型为双精度IEEE 754 64位浮点类型,但是在位运算中位运算符用于32位的数字上, 任何的数字操作都将转为32位, 运算结果再转化为Js数字类型. 描 ...

  10. Spring Boot图书管理系统项目实战-2.项目搭建

    导航: pre:  1.系统功能和架构介绍 next:3.用户登录 只挑重点的讲,具体的请看项目源码. 1.项目源码: 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.添加依赖 <depe ...