IDEA 安装lombok及使用详解

news/2024/7/16 10:23:04 标签: intellij-idea, java, ide

目录

① 为什么使用

② 如何安装

1.安装lombok插件:

   2.添加lombok的maven的pom.xml依赖:  

java-toc" style="margin-left:80px;">3.实体类示例代码Student.java

java-toc" style="margin-left:80px;">4.测试类LombokTest.java

   5. 输出结果:   

③ 常用且特殊注解


① 为什么使用

  项目中经常使用bean,entity等类,绝大部分数据类类中都需要get、set、toString、equals和hashCode方法,虽然eclipse和idea开发环境下都有自动生成的快捷方式,但自动生成这些代码后,如果bean中的属性一旦有修改、删除或增加时,需要重新生成或删除get/set等方法,给代码维护增加负担。而使用了lombok则不一样,使用了lombok的注解(@Setter,@Getter,@ToString,@@RequiredArgsConstructor,@EqualsAndHashCode或@Data)之后,就不需要编写或生成get/set等方法,很大程度上减少了代码量,而且减少了代码维护的负担。故强烈建议项目中使用lombok,去掉bean中get、set、toString、equals和hashCode等方法的代码。

② 如何安装

当前你使用的ide未安装lombok. lombok能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法,减少代码冗余.

1.安装lombok插件:

      具体流程如图:

      

点击下载就好啦,此处已经下载,创建项目测试

   2.添加lombok的maven的pom.xml依赖:  

java">  <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
  </dependency>

java">3.实体类示例代码Student.java

java">package com.lombok.demo;
 
 
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Setter
@Getter
@ToString
@EqualsAndHashCode
public class Student {
 
    private String name;
    private int age;
    private String male;
    private String studentNo;
}

java">4.测试类LombokTest.java

java">package com.lombok.demo;
 
import lombok.extern.java.Log;
 

@Log
public class LombokTest {
 
    public static void main(String[] args) {
 
        Student student = new Student();
        student.setAge(27);
        student.setMale("woman");
        student.setName("xs");
        student.setStudentNo("2017");
 
        System.out.println(student.toString());
 
        Student student2 = new Student();
        student2.setAge(27);
        student2.setMale("woman");
        student2.setName("xs");
        student2.setStudentNo("2017");
 
        System.out.println(student.equals(student2));
 
        student2.setStudentNo("2018");
 
        System.out.println(student.equals(student2));
 
        log.info("lombok test");
 
    }
}

   5. 输出结果:   

java">Student(name=xs, age=27, male=woman, studentNo=2017)
true
false
lombok test

③ 常用且特殊注解

@AllArgsConstructor

@AllArgsConstructor 替代@Autowired构造注入,多个bean 注入时更加清晰

java">@Slf4j
@Configuration
@AllArgsConstructor
public class RouterFunctionConfiguration {
    private final HystrixFallbackHandler hystrixFallbackHandler;
    private final ImageCodeHandler imageCodeHandler;
    
}

// 替代如下代码

@Slf4j
@Configuration
public class RouterFunctionConfiguration {
    @Autowired
    private  HystrixFallbackHandler hystrixFallbackHandler;
    @Autowired
    private  ImageCodeHandler imageCodeHandler;
}

@RequiredArgsConstructor

@RequiredArgsConstructor 只会构造注入 final 注释的属性,推荐使用

java">@RestController
@RequiredArgsConstructor
@RequestMapping("/user")
@Api(value = "user", tags = "用户管理模块")
public class SysUserController {

	private final SysUserService userService;
}

@SneakyThrows

@SneakyThrows 抛出异常

java">@SneakyThrows
private void checkCode(ServerHttpRequest request) {
    String code = request.getQueryParams().getFirst("code");
    
    if (StrUtil.isBlank(code)) {
        throw new ValidateCodeException("验证码不能为空");
    }
    
    redisTemplate.delete(key);
}


// 不使用就要加这个抛出
private void checkCode(ServerHttpRequest request) throws ValidateCodeException {
    String code = request.getQueryParams().getFirst("code");
    
    if (StrUtil.isBlank(code)) {
        throw new ValidateCodeException("验证码不能为空");
    }
}

@UtilityClass

@UtilityClass 工具类再也不用定义static的方法了,直接就可以Class.Method 使用

java">@UtilityClass
public class Utility {
    
    public String getName() {
        return "name";
    }
}

public static void main(String[] args) {
    System.out.println(Utility.getName());
}

@Cleanup

@CleanUp: 清理流对象,不用手动去关闭流,多么优雅

java">@Cleanup
OutputStream outStream = new FileOutputStream(new File("text.txt"));
@Cleanup
InputStream inStream = new FileInputStream(new File("text2.txt"));
byte[] b = new byte[65536];
while (true) {
    int r = inStream.read(b);
    if (r == -1) break;
    outStream.write(b, 0, r); 
}


http://www.niftyadmin.cn/n/184313.html

相关文章

Window10 系统休眠或睡眠状态恢复-占用磁盘空间 100% 问题以及解决方法

Window10 系统休眠或睡眠状态恢复-占用磁盘空间 100% 问题以及解决方法系统环境版本排除问题过程解决问题总结不知从何时开始&#xff0c;电脑就不定期变的非常卡&#xff0c;尤其是笔者平时不关机&#xff0c;下班都是按关机键让电脑进入休眠状态。 一直以来都没事&#xff0…

【GPT4】微软 GPT-4 测试报告(3)GPT4 的编程能力

欢迎关注【youcans的GPT学习笔记】原创作品&#xff0c;火热更新中 微软 GPT-4 测试报告&#xff08;1&#xff09;总体介绍 微软 GPT-4 测试报告&#xff08;2&#xff09;多模态与跨学科能力 微软 GPT-4 测试报告&#xff08;3&#xff09;GPT4 的编程能力 【GPT4】微软 GPT-…

数据中台通用体系架构

不同的企业对数据有不同的需求。企业数据应用不断更新迭代&#xff0c;企业的中台系统也需要不断变化。 从数据处理与数据治理两个维度出发&#xff0c;可以设计一个解耦的数据中台体系架构。该数据中台体系架构具有一定的柔性&#xff0c;可按照企业应用需求进行组合&#xff…

读多写多的直播互动系统优化

说到读多写多不得不提缓存&#xff0c;因为目前只有缓存才能够提供大流量的数据服务&#xff0c;而常见的缓存架构&#xff0c;基本都会使用集中式缓存方式来对外提供服务。但是&#xff0c;集中缓存在读多写多的场景中有上限&#xff0c;当流量达到一定程度&#xff0c;集中式…

★DDR相关

1.速率&#xff0c;电压 DDR3&#xff1a;800-2133Mbps&#xff1b;1.5V&#xff08;VDDQ&#xff09; DDR4&#xff1a;1600-3200Mbps&#xff1b;1.2V&#xff08;VDDQ&#xff09; 1&#xff1a;tCK1.25ns&#xff0c;芯片支持最大IO时钟频率&#xff08;DDR3频率&#xf…

大数据Flink进阶(十一):Flink History Server配置使用

文章目录 Flink History Server配置使用 一、Standalone History Server配置与验证 1、配置 2、验证

关于加解密、加签、验签等

目录 1.密码学常用术语&#xff1a; 2.加签、验签 3.私钥、公钥、证书 4.根据证书获取证书序列号等相关代码 为了确保数据传输和数据存储的安全&#xff0c;我们可以通过特定的算法&#xff0c;将数据明文加密成复杂的密文。 1.密码学常用术语&#xff1a; 明文&#xf…

python-如何选择回归分析算法

目录 1.如何选择回归分析算法 2.python回归分析 ​3.补充 1.如何选择回归分析算法 回归分析算法按照自变量的个数分为一元回归和多元回归&#xff0c;按照影响是否线性分为线性回归和非线性回归。在面对不同回归方法的选择时&#xff0c;可参考以下因素&#xff1a; &#…