Lombox详细讲解

1.Lombok注解:
Lombox详细讲解_第1张图片
2.idea安装lombox插件和导入lombox的jar包:
安装插件:
Lombox详细讲解_第2张图片

pom.xml引入jar包:
Lombox详细讲解_第3张图片
3.Lombox的优缺点:
优点:
1.通过注解自动生成样板代码,提高开发效率
2.代码简洁,只关注相关属性
3.新增属性后,无需刻意修改相关方法
缺点:
1.降低了源代码的可读性和完整性
2.加大对问题排查的难度
3.需要IDE的相关插件的支持

@Getter:(为属性生成get方法,可以用在类或者属性上面,在类上表示类中所有属性都生成get方法)

package com.mystudy.elastic.job.springboot;


import lombok.AccessLevel;
import lombok.Getter;

import javax.validation.constraints.NotNull;

/**
 * @Getter注解(可以用在类或者属性上面,在类上表示类中所有属性都生成get方法)
 * 为属性生成get方法
 */
public class GetterTest {

    //自动生成getName()方法,此方法为public
    @Getter
    private String name;

    //自动生成getAge()方法,而且此方法为private,而且是@NotNull
    @Getter(value = AccessLevel.PACKAGE,onMethod_ = {@NotNull})
    private String age;

    //自动生成getPhone()方法,此方法为public,而且懒加载
    @Getter(lazy = true)
    private final String phone = "1243543";

}

@Setter注解(为属性生成set方法,可以用在类或者属性上面,在类上表示类中所有属性都生成set方法)

package com.mystudy.elastic.job.springboot;


import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotNull;

/**
 * @Setter注解(可以用在类或者属性上面,在类上表示类中所有属性都生成set方法)
 * 为属性生成set方法
 */
public class SetterTest {

    //自动生成setName()方法,此方法为public
    @Setter
    private String name;

    //自动生成setAge()方法,而且此方法为private,而且是@NotNull
    @Setter(value = AccessLevel.PACKAGE,onMethod_ = {@NotNull})
    private String age;

}

@ToString注解(作用在类上,生成toString方法)

package com.mystudy.elastic.job.springboot;

import lombok.ToString;

/**
 *  @ToString注解(作用在类上)
 *  生成toString方法
 *  includeFieldNames = false表示生成的toString方法没有属性名,只有属性值
 *  exclude = {"field1"}表示toString方法里面排除field1
 *  of = {"field1"}表示toString方法里面只有field1
 *  doNotUseGetters = true表示不适应getter
 */
@ToString(
        includeFieldNames = false,
        exclude = {"field1"},
        of = {"field1"},
        doNotUseGetters = true
)
public class ToStringTest {
    private String field1;
    private String field2;
}

@EqualsAndHashCode注解(作用在类上,生成Equals方法和HashCode方法)

package com.mystudy.elastic.job.springboot;

import lombok.EqualsAndHashCode;

/**
 * @EqualsAndHashCode注解(作用在类上)
 * 生成Equals方法和HashCode方法
 * exclude = {"field1"} 生成的Equals方法和HashCode方法排除field1属性
 */
@EqualsAndHashCode(
        exclude = {"field1"}
)
public class EqualsAndHashCodeTest {
    private String field1;
    private String field2;
}

Lombox详细讲解_第4张图片

Lombox详细讲解_第5张图片
@Data注解(大而全的注解:包含@Getter,@Setter,@ToString,@EqualsAndHashCode)

package com.mystudy.elastic.job.springboot;

import lombok.Data;

/**
 *
 * @Data注解(大而全的注解:包含@Getter,@Setter,@ToString,@EqualsAndHashCode)
 *
 */
@Data
public class DataTest {
    private String name;
    private String age;
}

@val注解(弱语言变量)

package com.mystudy.elastic.job.springboot;

import lombok.val;

import java.util.ArrayList;

/**
 * @val注解
 * 弱语言变量
 */
public class ValTest {
    
    public ValTest() {
        val field = "zhangxiaoxi";
        val list = new ArrayList<String>();
        list.add("zhangxiaoxi");
    }
}

Lombox详细讲解_第6张图片
@NotNull注解(作用在属性上,或者参数上, 生成非空检查)

package com.mystudy.elastic.job.springboot;

import lombok.NonNull;

/**
 * @NotNull注解(作用在属性上,或者参数上) 生成非空检查
 */
public class NonNullTest {
    public NonNullTest(@NonNull String field) {
        System.out.println(field);
    }
}

** @AllArgsConstructor注解:生成有所有参数的构造方法
@NoArgsConstructor注解:生成没有参数的构造方法
@RequiredArgsConstructor注解:生成有部分参数的构造方法**

package com.mystudy.elastic.job.springboot;


import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;

import javax.validation.constraints.NotNull;

/**
 * @AllArgsConstructor注解:生成有所有参数的构造方法
 * @NoArgsConstructor注解:生成没有参数的构造方法
 * @RequiredArgsConstructor注解:生成有部分参数的构造方法
 */
//@AllArgsConstructor
//@NoArgsConstructor
@RequiredArgsConstructor
public class ConstructorTest {

    private final String field1;

    @NotNull
    private String field2;
    private String field3;

}

Lombox详细讲解_第7张图片

@Cleanup注解 资源关闭

package com.mystudy.elastic.job.springboot;

import lombok.Cleanup;

import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * @Cleanup注解 资源关闭
 */
public class CleanupTest {
    public void copyFile(String in, String out) throws Exception {
        
        @Cleanup FileInputStream fileInputStream = new FileInputStream(in);

        @Cleanup FileOutputStream fileOutputStream = new FileOutputStream(out);
        
        int r;
        while ((r = fileInputStream.read()) != -1){
            fileOutputStream.write(r);
        }
    }

}

@Builder注解:简化对象创建过程
@Singular注解:配合@Builder注解,简化集合类型操作

package com.mystudy.elastic.job.springboot;

import lombok.Builder;
import lombok.Data;
import lombok.Singular;

import java.util.ArrayList;
import java.util.List;

/**
 * @Builder注解:原来默认的值不会被带过来,必须手动重新赋值
 * @Singular注解:
 */
@Builder
@Data
public class BuilderTest {

    //静态属性:不能赋值
    private static String staticField;

    //final属性
    private final String finalField;

    //已初始化的Fina1字段:不能赋值
    private final String initFinalField = "已初始化的final字段!";

    //普通属性
    private String field;

    //集合类属性
    @Singular
    private List<String> listFields;

    public static void main(String[] args) {
        BuilderTest builderTest = BuilderTest
                //builder创建一个可以链式赋值的对象
                .builder()
                //为这个对象的”每个”字段赋值
                .finalField("手动赋值finalField字段")
                .field("手动赋值field字段")
                //有@Singular才有下面的listField
                .listField("lili")
                .listFields(new ArrayList<>())
                //build方法来创建对象。此时创建出来的对象,是不可变的! !
                .build();
        System.out.println(builderTest.toString());
    }

}

在这里插入图片描述

日志体系
Lombox详细讲解_第8张图片

@slf4j注解:简化日志引入方式(完成日志的输出)
pom.xml导入对应的jar包:

  <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.30</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14
            </artifactId>
            <version>1.7.30</version>
            <scope>test</scope>
        </dependency>
package com.mystudy.elastic.job.springboot;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

/**
 * @Slf4j注解(完成日志的输出)
 */
@Slf4j
public class LogTest {

    @Test
    public void func(){
        log.error("日志!!!");
    }
}

你可能感兴趣的:(java,lombox,java)