롬복은 자바 라이브러리로 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
'백엔드 > 스프링' 카테고리의 다른 글
SpringMVC의 기본이 되는 애노테이션(@controller, @service, @repository) (0) | 2021.09.04 |
---|---|
Controller에서 view로 데이터를 전달할 때 사용하는 애노테이션 (0) | 2021.09.03 |
메이븐 기본 폴더 구조 (0) | 2021.07.02 |
메이븐 프로젝트(Maven Project) (0) | 2021.07.02 |
스프링이란? (0) | 2021.07.02 |
최근댓글