Lombok的官方介绍
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Lombok以简单的注解形式来简化java代码,提高开发人员的开发效率
lombok是一个编译级别的插件,它可以在项目编译的时候生成一些代码
1.为IntelliJ IDEA安装插件
file——>settings——>Plugins
安装完后需要重启IntelliJ IDEA
2.添加依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.61</version> </dependency> </dependencies>
3.使用
常用注解
@Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法 @Setter :注解在属性上;为属性提供 setting 方法 @Setter :注解在属性上;为属性提供 getting 方法 @Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象 @NoArgsConstructor :注解在类上;为类提供一个无参的构造方法 @AllArgsConstructor :注解在类上;为类提供一个全参的构造方法 @Cleanup : 可以关闭流 @Builder : 被注解的类加个构造者模式 @Synchronized : 加个同步锁 @SneakyThrows : 等同于try/catch 捕获异常 @NonNull : 如果给参数加个这个注解 参数为null会抛出空指针异常 @Value : 注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法
(1)@Data
@Data 自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法
实体类
package com.abc.plus.entity; import lombok.Data; import java.util.Date; @Data public class ApiFiles { private Long id; private String name; private Integer size; private Integer status; private Date uploadTime; private String version; }
测试
package com.abc.plus.controller; import com.abc.plus.core.Result; import com.abc.plus.core.SnowFlake; import com.abc.plus.entity.ApiFiles; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Date; @RestController public class demoController { private SnowFlake sn; @RequestMapping("/test") public Result test(){ sn = new SnowFlake(1,1); ApiFiles file = new ApiFiles(); file.setId(sn.nextId()); int r= (int) (Math.random() * 50 + 500); file.setName("file"+String.valueOf(r)); file.setSize(r); file.setStatus(1); Date currentTime = new Date(); file.setUploadTime(currentTime); return Result.success(200,file); } }
SnowFlake
package com.abc.plus.core; import com.alibaba.fastjson.JSON; /** * Created by Beibei on 19/02/22 * API响应结果 */ public class Result<T> { private int code; private String message; private T data; public Result setCode(Integer code) { this.code = code; return this; } public int getCode() { return code; } public String getMessage() { return message; } public Result setMessage(String message) { this.message = message; return this; } public T getData() { return data; } public Result setData(T data) { this.data = data; return this; } @Override public String toString() { return JSON.toJSONString(this); } public static <T> Result<T> fail(Integer code,T data) { Result<T> ret = new Result<T>(); ret.setCode(code); ret.setData(data); return ret; } public static <T> Result<T> failMessage(Integer code,String msg) { Result<T> ret = new Result<T>(); ret.setCode(code); ret.setMessage(msg); return ret; } public static <T> Result<T> successMessage(Integer code,String msg) { Result<T> ret = new Result<T>(); ret.setCode(code); ret.setMessage(msg); return ret; } public static <T> Result<T> success(Integer code,T data) { Result<T> ret = new Result<T>(); ret.setCode(code); ret.setData(data); return ret; } public static <T> Result<T> success(Integer code,T data,String msg) { Result<T> ret = new Result<T>(); ret.setCode(code); ret.setData(data); ret.setMessage(msg); return ret; } }