转:https://www.cnblogs.com/qnight/p/8997493.html
前言
Lombok
是一种Java™
实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。
正文
添加依赖
在 pom.xml 文件中添加相关依赖:
<lombok.version>1.16.20</lombok.version>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
安装插件
由于 Lombok
采取的注解形式的,在编译后,自动生成相应的方法,为了不让 ide 疯了,需要下载插件了支持它。
以 idea 为例:查找插件 lombok plugin
安装即可。
用我的 User 实体类为例(set,get,toString 方法),
@Getter
@Setter
@ToString
public class SysUserEntity implements Serializable
在按快捷键 Ctrl + F12
,可以查找到set,get,toString 方法。
注解
写点常用的,其余的 api 的打开 Jar 包一目了然
@Getter
@Setter
@ToString
@EqualsAndHashCode
构造函数
@AllArgsConstructor
会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验,
全部参数的构造函数的自动生成,该注解的作用域也是只有在实体类上,参数的顺序与属性定义的顺序一致。
@NoArgsConstructor
无参构造函数
@RequiredArgsConstructor
会生成一个包含常量(final),和标识了@NotNull的变量 的构造方法。
怎么使用
它们都有三个参数可以设置
1. String staticName() default "";
如果设置了它,将原来的构造方法的访问修饰符将会变成 私有的,而外添加一个静态构造方法,参数相同,名字是设置的字符串的名字,访问修饰符为公有的。
-
AnyAnnotation[] onConstructor() default {};
在构造方法上添加注解。使用方法@RequiredArgsConstructor(onConstructor=@__({@AnnotationsGoHere}))}
例如我们在 Spring 项目中需要注入多个值,写很多个
@Autowired
很麻烦,就可以使用这种方式:@Service @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class UserServiceImpl implements IUserService { private final IUserRepository userRepository; private final IOrderRepository orderRepository; ………………
-
AccessLevel access() default lombok.AccessLevel.PUBLIC;
构造函数访问修饰符; -
@NoArgsConstructor
无参构造函数中还有个注解boolean force() default false;
作者的注释是 If {@code true}, initializes all final fields to 0 / null / false. Otherwise, a compile time error occurs.设置为
true
的时候,初始化所有的参数为默认值,否则编译错误。
@Data
我自己尝试了下,我们使用 @Data
注解就可以有下面几个注解的功能: @ToString
、@Getter
、@Setter
、@EqualsAndHashCode
、@NoArgsConstructor
。
注意的是,同时使用
@Data
和@AllArgsConstructor
后 ,默认的无参构造函数失效,如果需要它,要重新设置@NoArgsConstructor
@Slf4j
//类上面注解了,直接调用 log 即可:
log.info(xxxx);
@Log
使用的是 java.util.logging.Logger
,直接使用 变量 log
。
@Builder
bulder 模式构建对象。
@Cleanup
@Cleanup
InputStream in = new FileInputStream(args[0]);
@Cleanup
OutputStream out = new FileOutputStream(args[1]);
自动化关闭流,相当于 jdk1.7 种的 try with resource
val
类型推导。
val example = new ArrayList<String>();
example.add("Hello, World!");
对应的转换后代码就是:
val example = new ArrayList<String>();
example.add("Hello, World!");
@NonNull
public NonNullExample(@NonNull Person person) {
this.name = person.getName();
}
转换后就是:
public NonNullExample(@NonNull Person person) {
if (person == null) {
throw new NullPointerException("person");
}
this.name = person.getName();
}
@SneakyThrows
翻译就是暗中抛出异常
当我们需要抛出异常,在当前方法上调用,不用显示的在方法名后面写 throw
@SneakyThrows(Exception.class)
@Synchronized
方法中所有的代码都加入到一个代码块中,默认静态方法使用的是全局锁,普通方法使用的是对象锁,当然也可以指定锁的对象。
private final Object lock = new Object();
@Synchronized("lock")
public void foo() {
// Do something
}
个人认为这样的阅读起来比较麻烦,实际开发中往往将 synchronized
颗粒化到代码块中。
相关推荐
下面将详细介绍这些关键技术及其相互间的配合。 1. **Spring Boot 3**: Spring Boot是Spring框架的一个模块,它简化了初始化、配置和运行Spring应用的过程。Spring Boot 3是最新版本,提供了更多性能优化和对新Java...
1. **Gson库介绍** Gson是Google推出的一款开源库,用于在Java对象和JSON数据之间进行映射。它可以将Java对象转换成JSON字符串,也可以将JSON内容解析成等效的Java对象。这对于在服务器和客户端之间交换数据,或者...
下面将详细介绍其中的一些关键插件及其作用。 1. **BackgroundImagePlus**:此插件允许开发者自定义IDEA的工作区背景,可以设置静态图片或动态壁纸,使编程环境更具个性化,同时可能帮助创造更舒适的编码氛围。 2....
import lombok.extern.slf4j.Slf4j; import org.springframework.beans.PropertyEditorRegistrar; import org.springframework.beans.PropertyEditorRegistry; / * @author pader * PropertyEditor 在不同的包...
2. Lombok库的介绍:Lombok是一个Java库,通过注解的方式,可以在编译时自动为类的属性添加构造器、getter/setter、equals、hashCode和toString方法。这样,开发者在源代码中无需手动编写这些重复性代码,同时在编译...
- **Speedment 3.0**:Speedment 3.0的介绍突出了它如何让Java开发者在编写数据库应用程序时保持在Java环境中,而不用转到其他语言或框架。 ##### Java提案 - **JEP 262**:JEP 262是Java的一个增强提议,关于提供...
* `lombok`:Lombok 插件,用于简化 model 对象的处理。 * `mysql-connector-java`:MySQL 驱动,用于连接 MySQL 数据库。 二、 Spring Boot 配置 在 Spring Boot 应用中,我们需要配置数据库连接、MyBatis 配置等...
下面将详细介绍如何利用 Jedis 实现对 Redis 的基本操作。 #### 三、搭建开发环境 为了使用 Jedis 操作 Redis,首先需要在项目中引入必要的依赖库: 1. **Redis 客户端 Jedis**:用于与 Redis 进行交互。 2. **...
本文将详细介绍这一问题的原因以及如何解决。 #### 二、序列化简介 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,如果一个类需要支持序列化,那么这个类需要实现`java.io.Serializable`...
本文将详细介绍几个在标题和描述中提到的、能够极大提升开发效率的IDEA插件。 1. **Lombok插件**: Lombok是一个Java库,通过注解的方式,帮助开发者自动处理类中的getter、setter、构造函数等冗余代码,从而减少...
在 provider 项目中,我们需要配置 pom 文件,引入 Spring Boot Web 和 Lombok 依赖。接着,创建一个简单的 UserService 类,提供 getUser 方法。在主启动类 ProviderApplication 中启动 Spring Boot 应用。...
介绍 一个学生宿舍管理系统(jsp+servlet),功能齐全,jsp页面使用了layui,JQuery,layer,ECharts等,后端使用maven搭建,用tomcat7插件运行,使用了jstl,jackson,lombok,commons-fileupload等插件。简单模拟...
#### 介绍 快速开发架构模板 #### 软件架构 使用前后端分离的形式 1. api ———— 后端接口服务 2. nep-admin ———— 单页面版静态页面 3. web(单页面版) ———— 前端页面服务 4. nginx ———— 服务核心...
本文将深入探讨“AndroidStudio 优秀插件汇总.zip”中的内容,介绍一系列提升开发效率、优化代码质量和增强用户体验的Android Studio插件。 1. **Android Studio插件的重要性** - 提升开发效率:插件可以自动化...
本知识点将详细介绍Java中如何将JSON格式的字符串转换为Java对象,以及常见的第三方库。 首先,要理解JSON数据结构。一个标准的JSON对象是由一系列的“名称/值”对组成的,其中值可以是字符串、数字、数组、布尔值...
#### 三、项目架构与组件介绍 1. **返回数据格式封装 - Ret类**:为了统一响应格式,项目中封装了一个Ret类,该类负责将所有的数据响应结果进行统一处理,方便前端解析。 2. **列表查询基类 - BaseListRequestPo**...
下面将详细介绍BeanUtils工具类的核心功能和使用方法。 1. **属性设置与获取** BeanUtils工具类通过反射机制实现了对JavaBean的属性设置。例如,我们有一个User类,包含name和age属性,我们可以用以下方式设置属性...
本篇将详细介绍IDEA的配置步骤,包括工作区配置、好用的插件推荐以及项目配置,以帮助开发者创建高效、舒适的开发环境。 1. **IDEA工作区配置** - **Toolbox管理**: 安装Toolbox可以方便地管理和更新IDEA的不同...
lombok插件支持 依赖介绍 springboot-web Hibernate验证器 阿里云市场短信服务相关依赖 mysql驱动(8.0)及数据源(com.alibaba.Druid) joda-time时间支持 功能介绍 前端 register.html注册页面(实现手机号+...
使用Lombok时,需要在项目中添加Lombok依赖,并安装Lombok插件以启用注解处理器。 2. **RestfulTool/RestfulToolkit**:这两款插件都是针对Restful服务开发的辅助工具,提供了一个服务树视图,可以直接从URL跳转到...