IDEA 安装lombok及使用详解

素颜马尾好姑娘i 2024-03-24 09:57 151阅读 0赞

目录

① 为什么使用

② 如何安装

1.安装lombok插件:

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

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

4.测试类LombokTest.java

  1. 输出结果:

③ 常用且特殊注解


① 为什么使用

项目中经常使用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插件:

具体流程如图:

662ebb543fcf4673b750265688fa7f99.png

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

a0435949165f474193b5103218582e8e.png

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

  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. <version>1.16.10</version>
  5. </dependency>

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

  1. package com.lombok.demo;
  2. import lombok.EqualsAndHashCode;
  3. import lombok.Getter;
  4. import lombok.Setter;
  5. import lombok.ToString;
  6. @Setter
  7. @Getter
  8. @ToString
  9. @EqualsAndHashCode
  10. public class Student {
  11. private String name;
  12. private int age;
  13. private String male;
  14. private String studentNo;
  15. }

4.测试类LombokTest.java

  1. package com.lombok.demo;
  2. import lombok.extern.java.Log;
  3. @Log
  4. public class LombokTest {
  5. public static void main(String[] args) {
  6. Student student = new Student();
  7. student.setAge(27);
  8. student.setMale("woman");
  9. student.setName("xs");
  10. student.setStudentNo("2017");
  11. System.out.println(student.toString());
  12. Student student2 = new Student();
  13. student2.setAge(27);
  14. student2.setMale("woman");
  15. student2.setName("xs");
  16. student2.setStudentNo("2017");
  17. System.out.println(student.equals(student2));
  18. student2.setStudentNo("2018");
  19. System.out.println(student.equals(student2));
  20. log.info("lombok test");
  21. }
  22. }

5. 输出结果:

  1. Student(name=xs, age=27, male=woman, studentNo=2017)
  2. true
  3. false
  4. lombok test

③ 常用且特殊注解

@AllArgsConstructor

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

  1. @Slf4j
  2. @Configuration
  3. @AllArgsConstructor
  4. public class RouterFunctionConfiguration {
  5. private final HystrixFallbackHandler hystrixFallbackHandler;
  6. private final ImageCodeHandler imageCodeHandler;
  7. }
  8. // 替代如下代码
  9. @Slf4j
  10. @Configuration
  11. public class RouterFunctionConfiguration {
  12. @Autowired
  13. private HystrixFallbackHandler hystrixFallbackHandler;
  14. @Autowired
  15. private ImageCodeHandler imageCodeHandler;
  16. }

@RequiredArgsConstructor

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

  1. @RestController
  2. @RequiredArgsConstructor
  3. @RequestMapping("/user")
  4. @Api(value = "user", tags = "用户管理模块")
  5. public class SysUserController {
  6. private final SysUserService userService;
  7. }

@SneakyThrows

@SneakyThrows 抛出异常

  1. @SneakyThrows
  2. private void checkCode(ServerHttpRequest request) {
  3. String code = request.getQueryParams().getFirst("code");
  4. if (StrUtil.isBlank(code)) {
  5. throw new ValidateCodeException("验证码不能为空");
  6. }
  7. redisTemplate.delete(key);
  8. }
  9. // 不使用就要加这个抛出
  10. private void checkCode(ServerHttpRequest request) throws ValidateCodeException {
  11. String code = request.getQueryParams().getFirst("code");
  12. if (StrUtil.isBlank(code)) {
  13. throw new ValidateCodeException("验证码不能为空");
  14. }
  15. }

@UtilityClass

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

  1. @UtilityClass
  2. public class Utility {
  3. public String getName() {
  4. return "name";
  5. }
  6. }
  7. public static void main(String[] args) {
  8. System.out.println(Utility.getName());
  9. }

@Cleanup

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

  1. @Cleanup
  2. OutputStream outStream = new FileOutputStream(new File("text.txt"));
  3. @Cleanup
  4. InputStream inStream = new FileInputStream(new File("text2.txt"));
  5. byte[] b = new byte[65536];
  6. while (true) {
  7. int r = inStream.read(b);
  8. if (r == -1) break;
  9. outStream.write(b, 0, r);
  10. }

发表评论

表情:
评论列表 (有 0 条评论,151人围观)

还没有评论,来说两句吧...

相关阅读

    相关 IDEA安装lombok

    首先先了解下: What:lombok是什么? lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说