롬복은 자바 라이브러리로 getter, setter 등의 반복되는 메소드 작성 코드를 줄여주는 코드 다이어트 라이브러리이다.

 

애노테이션 기반의 코드이다.

 

자동생산을 통해 가독성 및 유지보수성이 향상된다.

 

하지만 정확한 이해없이 사용한다면 순환 참조, 무한 재귀 호출과 같은 문제가 발생할 수 있다.

 

그리고 정해진 방식으로 코드가 만들어지기 때문에 관례적인 방식이 아닌 방식을 사용하려면 직접 만들어야 한다.

 

가장 많이 사용하는 애노테이션 몇 가지를 소개하겠다.

 

@Getter, @Setter : 필드에 getter, setter를 자동으로 생성해주는 애노테이션이다.

@Getter @Setter
public class Person {
  private String name;
}

//class 위에 @Getter와 @Setter를 붙이는 lombok을 이용한 방식이다. 
//아래 방식은 고전적인 방식으로 name이라는 필드값이 있을 때 직접 getter와 setter를 만드는 방식이다.

public class Person {
  private String name;
	
  public String getName() {
    return name;
  }

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

@ToString : toString() 메소드를 생성해준다.

exclude를 사용하면 원하지 않는 속성을 출력하지 않을 수 있다.

@ToString
public class Person {
  private String name;
    }
}

//class 위에 @Getter와 @Setter를 붙이는 lombok을 이용한 방식이다. 
//아래 방식은 고전적인 방식으로 name이라는 필드값이 있을 때 직접 toString을 만드는 방식이다.

public class Person {
  private String name;

  @Override
  public String toString() {
    return "Person{" + "name='" + name + '\'' + '}';
  }
}

@(No, Required, All)ArgsConstructor : 모든 final 필드에 대한 생성자를 만들어준다.

-> access level을 설정해줄 수 있다.

No : 파라미터가 없는 생성자를 만들어준다.

Required : final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 만들어준다.

All : 모든 필드 값을 파라미터로 받는 생성자를 만들어준다.

@NoArgsConstructor
public class Person {
  private String name;  
}

//class 위에 @NoArgsConstructor를 붙이는 lombok을 이용한 방식이다. 
//아래 방식은 고전적인 방식으로 매개변수가 없는 생성자를 직접 만드는 방식이다.

public class Person {

  private String name;

  public Person() { }
}

-----------------------------------------------------------

@RequiredArgsConstructor
public class Person {
  private final String name;
}

//class 위에 @NoArgsConstructor를 붙이는 lombok을 이용한 방식이다. 
//아래 방식은 고전적인 방식으로 매개변수가 있는 생성자를 직접 만드는 방식이다.

public class Person {

  private final String name;

  public Person(String name) {
    this.name = name;
  }
}

-----------------------------------------------------------

@AllArgsConstructor
public class Person {
  private final String name;
}

//class 위에 @AllArgsConstructor를 붙이는 lombok을 이용한 방식이다. 
//아래 방식은 고전적인 방식으로 필드에 있는 모든 값을 이용해서 생성자를 만드는 방식이다.

public class Person {

    private String name;
    private String name2;

    public Person(String name, String name2) {
        this.name = name;
        this.name2 = name2;
    }
}

@EqualsAndHashCode : 객체의 동등성과 동일성을 비교해주는 연산자를 생성해준다.

equals는 두 객체의 내용이 같은지를 비교

hashcode는 두 객체가 같은 객체인지 동일성을 비교

 

@Data :

@ToString ,@EqualsAndHashCode, @Getter,

모든 non-final 필드에 대해 @Setter를 설정하고

@RequiredArgsConstructor를 설정해주는 애노테이션이다.

 

너무 많은 걸 만들어준다. 사용상 문제가 생길 가능성이 높기 때문에 사용을 지양하자.

 

@Slf4j : 로그를 쉽게 사용할 수 있게 해준다.

log.info("{}", "출력값") 방식으로 사용한다.

info 단계 말고도 debug 등을 사용할 수 있다.

 

주의할 점은 System.out.prinln에서 처럼 연결 연산자(+)가 아닌 콤마(,)를 사용하고 출력값의 갯수는 '{}' 갯수이다.

 

이외에도 더 많은 것들이 있습니다.

https://projectlombok.org/api/lombok/package-summary.html