프로젝트 생성 


1. File -> New ->Project

2. Spring Initailizr -> Next

 

3. 설정 변경

4. Developer Tools -> Lombok 체크

5. 프로젝트 생성 위치 확인 후 생성

 

6. Test에서 예시를 작성할 예정이므로 build.gradle에 추가해줍시다.

testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'


Lombok이란?

▶ 어노테이션 기반으로 Construct ToString Getter 등등을 자동적으로 생성해주는 라이브러리입니다. 

 

lombok 어노테이션


제가 자주 사용하는 어노테이션들을 알아보겠습니다. Lombok을 사용한 코드와 사용하지 않은 코드를 보여드리겠습니다. 

1. @AllArgsConstructor

-> 클래스에 존재하는 모든 필드에 대한 생성자를 생성해줍니다. 

@AllArgsConstructor
public class Member {

    private String email;
    private String name;
    private int age;
}
public class Member {

    private String email;
    private String name;
    private int age;

    public Member(String email, String name, int age) {
        this.email = email;
        this.name = name;
        this.age = age;
    }
}

 

2. @Builder

-> Builder는 인자가 많을 때 어떠한 인자를 넣어야 하는지 필요없는 인자 인지 확인이 가능하다.

public class Member {

    private String email;
    private String name;
    private int age;
    
    @Builder
    public Member(String email, String name, int age) {
        this.email = email;
        this.name = name;
        this.age = age;
    }
}
Member kim = Member.builder()
        .email("google@email.com")
        .name("kim")
        .age(10).build();

3. @Data

->  @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode.를 종합적으로 합쳐놓은 어노테이션이다.

@Data
public class Member {

    private String email;
    private String name;
    private int age;
}
Member member = new Member();
member.setAge(10);
member.setEmail("google");
member.setName("kim");
int age = member.getAge();
String string = member.toString();
System.out.println(age);
System.out.println(string);

4. @Getter

-> 필드 변수에 대한 get() 메소드를 생성해준다. 

@Getter
public class Member {

    private String email;
    private String name;
    private int age;
    
}
public class Member {

    private String email;
    private String name;
    private int age;

    public String getEmail() {
        return email;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

 

5. @NoArgsConstructor

-> access로 설정한 범위를 default 생성자를 만들어 외부에서 default 생성자를 무분별하게 호출하지 못하게 한다.

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Member {

    private String email;
    private String name;
    private int age;

    public String getEmail() {
        return email;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}
public class Member {

    private String email;
    private String name;
    private int age;

    private Member(){};
}

6. @Setter

-> @Getter과 동일학 set()을 생성해준다.

@Setter
public class Member {

    private String email;
    private String name;
    private int age;
}
public class Member {

    private String email;
    private String name;
    private int age;

    public void setEmail(String email) {
        this.email = email;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

7. @RequiredArgsConstructor

-> 아직 초기화 되지 않은 final 필드에 대하여 의존성을 주입해줍니다. spring에서는 Bean을 이용할 때 많이 사용됩니다. 

@RequiredArgsConstructor
public class Member {

    private final String email;
    private String name;
    private int age;
}
public class Member {

    private final String email;
    private String name;
    private int age;

    public Member(String email) {
        this.email = email;
    }
}

8. @ToString

-> toString() 메소드를 오버라이딩하여 각각의 필드를 출력할 수 있도록 해줍니다. of={}를 이용하여 원하는 필드만 변환할 수 있게 해줄 수 있습니다.

@ToString(of = {"age, name"})
public class Member {

    private String email;
    private String name;
    private int age;

}

public class Member {

    private String email;
    private String name;
    private int age;


    @Override
    public String toString() {
        return "name: "+name+"\n"+"age: "+name;
    }
}

 

 

지금까지 Lombok에서 자주 사용되는 어노테이션들을 알아보았습니다. 보시다시피 코드의 길이가 많이 주는 것을 알 수있습니다. 많이 애용합시다.. 읽어주셔서 감사합니다.