-
[Spring] Lombok 개념 및 사용법Spring 2024. 4. 22. 23:49
Lombok 이란?
- 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리이다, Lombok을 이용하면 다양한 방면의 코드를 자동완성 시킬 수 있다.
- Lombok을 사용하지 않으면 코드의 가독성이 떨어지는 단점이 있다.
- Lombok을 사용하면 코드를 단순화시킬 수 있다.
LomBok의 장점
- 어노테이션 기반의 코드 자동 생성을 통한 생산성 향상
- 반복되는 코드 다이어트를 통한 가독성 및 유지보수성 향상
- Getter, Setter 외에 빌더 패턴이나 로그 생성 등 다양한 방면으로 활용 가능
Lombok 기능 및 사용 예제
[ @Getter @Setter ]
- Lombok에서 가장 자주 활용하는 어노테이션이다.
- 클래스 위에 적용하면 모든 변수들에 적용가능, 변수 위에 적용시키면 해당 변수들만 적용 가능.
- getter와 setter 메서드를 자동으로 생성해 주는 기능을 제공한다.
- getter을 통해 필드의 값을 읽고, setter을 통해 필드의 값을 설정 할 수 있다.
[ @AllArgsConsturctor ]
- 모든 변수를 사용하는 생성자를 자동완성 시켜주는 어노테이션이다.
[ @NoArgsConstructor ]
- 어떠한 변수도 사용하지 않는 기본 생성자를 자동완성 시켜주는 어노테이션 이다.
[ @RequiredArgsConstructor ]
- 특정 변수만을 활용하는 생성자를 자동완성 시켜주는 어노테이션이다.
- 생성자의 인자로 추가할 변수에 @NonNull 어노테이션을 붙여서 해당 변수를 생성자의 인자로 추가할 수 있다.
- 아니면 해당 변수를 final로 선언해도 의존성을 주입받을 수 있다.
[ @EqualsAndHashCode ]
- 활용하면 클래스에 대한 equals 함수와 hasCode 함수를 자동으로 생성해준다.
- 만약 서로 다른 두 객체에서 특정 변수의 이름이 똑같은 경우 같은 객체로 판단할 수 있다.
- @EqualsAndHashCode(of = {"var1", "var2"})로 설정하여 var1과 var2가 동일하다면 같은 객체로 인식하도록 해주고 있다
- Common를 상속하고 있는데, 상위 클래스의 경우 적용시키지 않기 위해 false로 설정해 줄 수 있다.
[ @ToString ]
- 활용하면 클래스의 변수들을 기반으로 ToString 메서드를 자동으로 완성시켜 준다.
- 출력을 원하지 않는 변수에 @ToString. Exclude 어노테이션을 붙여주면 출력을 제외할 수 있다. 또한 상위 클래스에 대해도 toString을 적용시키고자 한다면 상위 클래스에 @ToString( = true)를 적용시켜 주면 된다.
[ @Data ]
- 활용하면 @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 자동완성 시켜준다.
- 객체의 안정성을 지키기 때문에 @Data의 활용을 지양한다.
[ @Builder ]
- 활용하면 해당 클래스의 객체의 생성에 Builder패턴을 적용시켜 준다.
- 모든 변수들에 대해 build 하기를 원한다면 클래스 위에 @Builder를 붙이면 되지만, 특정변수만 원한다면 그 위에 붙여주면 된다.
[ @Delegate ]
- 한 객체의 메서드를 다른 객체로 위임시켜 준다.
- 사용하는 함수들을 위임시켜서 코드를 편리하게 작성하도록 도와준다.
[ @Log 관련 어노테이션 ]
- Log4j2와 같은 어노테이션을 활용하면 해당 클래스의 로그 클래스를 자동 완성 시켜준다.
Summary
- Lombok? : 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리이다, 코드를 단순화시킨다.
- Lombok의 장점 : 코드 자동 완성을 통한 생산성 향상, 코드 단순화를 통한 가독성과 유지보수성 향상. 다양한 방면으로 활용 가능
- [ @Getter , @Setter ] : 가장 자주 쓰이는 어노테이션이다, getter와 setter 메서드를 자동으로 생성해 주는 기능을 제공한다,
getter는 해당 필드의 값을 읽을 수 있고, setter는 해당 필드의 값을 설정할 수 있다.
'Spring' 카테고리의 다른 글
[Spring] SpringFramework, SpringBoot의 개념 및 차이점 (0) 2024.05.16 [Spring] Spring Data JPA(Java Persistence API)란? (1) 2024.04.21 [Spring] Controller, Service, Repository 가 무엇일까? (0) 2024.04.20 [Spring] JdbcTemplate의 기본 (0) 2024.04.19 [Spring] DAO, DTO, VO, Entity 개념 및 차이점 (0) 2024.04.19