Human0722's blog Human0722's blog
首页
  • Spring

    • Spring Framework
    • Spring Boot
    • Spring Cloud
  • CCNA
  • Vue

    • Vue2
日本语
导航
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Human0722

Gravity always win
首页
  • Spring

    • Spring Framework
    • Spring Boot
    • Spring Cloud
  • CCNA
  • Vue

    • Vue2
日本语
导航
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Spring Framework

  • Spring Boot

  • Java 类库

    • Lombok
      • Mapstruct
      • Swagger
      • druid starter
      • Mybatis
      • Mybatis_Plus
    • 数据库

    • 解决方案

    • Java.Content
    • Java 类库
    Xueliang
    2022-05-20
    目录

    Lombok

    # What is Lombok

    在编写 JavaBean 代码时,往往需要为成员属性编写 setter/getter,这些代码的特点是量大, 机械。 Lombok 可以通过注解的方式在编译时期自动生成这些方法,减少了JavaBean编写的工作量。其额外提供的其他方法也降低了 JavaBean 的编写难度。

    # How to use Lombok

    由于Lombok工作在编译阶段,读取成员属性为其生成特定的方法,在编码阶段 IDE 无法生成这些方法相关的代码提示。所以在使用 Intellij IDEA 需要安装插件配合 。
    使用Maven 导入 lombok:

    <dependencies>
    	<dependency>
    		<groupId>org.projectlombok</groupId>
    		<artifactId>lombok</artifactId>
    		<version>1.18.24</version>
    		<scope>provided</scope>
    	</dependency>
    </dependencies>
    
    1
    2
    3
    4
    5
    6
    7
    8

    @Getter

    注解在类或字段上,为所有非 final 字段生成 getter() 方法。

    @Setter

    注解在类上,为所有非 final 字段生成 setter() 方法。

    @ToString

    注解在类上,为类自动生成 toString() 方法

    @EqualsAndHashCode

    注解在类上,生成 hashCode 和 euquals 方法。

    @NoArgsConstructor

    注解在类上,生成无参构造方法。

    @RequiredArgsConstructor

    @RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。

    # 在 Spring 注入写法1
    public class HelloController() {
        @Autowired
        private HelloService helloService;
    }
    
    # 在 Spring 注入写法2
    public class HelloController() {
      private HelloService helloService;
      
      @Autowired
      HelloController(HelloService helloService) {
          this.helloService = helloService;
      }
    }
    
    # Lombok 方式
    @RequiredArgsConstructor
    public class HelloController() {
      final HelloService helloService;
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    @AllArgsConstructor

    注解在类上,生成包含所有参数的构造方法。

    @Data

    注解在类上,生成 setter/getter, equals, canEqual, hashCode, toString 方法。不会为 final 字段生成 setter 方法。

    @Slf4j

    注解在类上,生成 log 变量。 private static final Logger log = LoggerFactory.getLogger(xxx.class);

    @FiledNameConstants

    注解在类上,为所有字段名生成同名常量,置于内部类 Field 下。常用于数据库查询。

    @FieldNameConstants
    class Person {
        String name;
        String age;
    }
    // "name".equals(Person.Fields.name);   == true
    
    1
    2
    3
    4
    5
    6
    DefineSprintBootStarter
    Mapstruct

    ← DefineSprintBootStarter Mapstruct→

    最近更新
    01
    DefineSprintBootStarter
    03-23
    02
    Spring MVC 启动流程分析
    03-23
    03
    Redis
    03-23
    更多文章>
    Theme by Vdoing | Copyright © 2019-2024 Human0722 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式