본문 바로가기
Programming/SpringFramework

[Spring] lombok(롬복) annotation & 라이브러리 설치

by prinha 2020. 8. 6.
반응형

 

 

롬복(lombok) 이란?

롬복(Lombok)은 자바에서 Model(DTO, VO, Domain) Object 를 만들때, 멤버필드(프로퍼티)에 대한 Getter/Setter, ToString과 멤버필드에 주입하는 생성자를 만드는 코드 등 불필요하게 반복적으로 만드는 코드를 어노테이션을 통해 줄여 주는 라이브러리, 프로젝트 입니다.

출처: https://goddaehee.tistory.com/95 [갓대희의 작은공간]

 


 

1. 롬복 직접 다운로드 경로

https://projectlombok.org/

 

2. maven을 이용하여 pom.xml에 코드 작성

https://mvnrepository.com/artifact/org.projectlombok/lombok

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.6</version>
    
     <!-- 가끔씩 인식 오류가 있을 때 이 부분 주석 처리-->
	<scope>provided</scope>
</dependency>

 

3. 롬복 설치 방법 

https://dev114.tistory.com/369

 

이클립스 lombok 설치

lombok 다운로드 https://mvnrepository.com/artifact/org.projectlombok/lombok org.projectlombok lombok 1.18.4 provided cmd 콘솔화면에서 본인 PC의 메이븐 레퍼지토리 경로로 이동하여 (예 :C:\Users\kumako..

dev114.tistory.com

 

4. lombok 주요 annotation

@Data : 다음 어노테이션을 모두 한번에 처리 한다.

  - @ToString : 모든 필드를 출력하는 toString() 메소드 생성

  - @EqualsAndHashCode : hascode 와 equals 메소드를 생성

  - @Getter(모든 필드) : getter, setter를 생성하지 않도록 지원

  - @Setter(모든 필드-final로 성언되지 않은)

  - @RequiredArgsConstructor : 필수 인자만 있는 생성자 생성
  
  - @NoArgsConstructor : 인자 없는 생성자 생성

  - @AllArgsConstructor : 모든 인자를 가진 생성자 생성
  
 
@Log : 종류별 로그를 사용할 수 있도록 한다. (@Log, @Slf4j, @CommonLog 등) 
 
@Cleanup : 자동 리소스 관리 : close() 메소드를 귀찮음 없게 안전하게 호출

@Value : 불변 클래스를 쉽게 생성

@SneakyThrows : Exception 발생시 체크된 Throable로 감싸서 전달

@Synchronized : 메소드에서 동기화 Lock을 설정

@Getter(lazy=true) : 동기화를 이용하여 최초 1회만 getter가 호출


 

5. @Data 사용 예제

  1) lombok 적용전

       - 생성자, getter, setter가  있음

       - VO에 변수가 추가될 때마다 getter, setter, ToString 계속 추가 해줘야함

public class ExampleVO {
    private final String name;
    private int age;
    public SimpleVO(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "name=" + name + ", age=" + age;
    }
}

 

  2) lombok 적용후 -> 필요한 소스들 자동 추가!!

@Data
public class ExampleVO {
    private final String name;
    private int age;
}

 -> 웬만하면 Data는 지양하고 그때마다 필요한 Data의 하위 어노테이션들을 사용해주기

 


 

클린 코드나, 유지 보수하기 좋은 코드, 좋은 캡슐화 이런 것들이 너무 거창한 것이 아니라

객체를 생성할 때나 메서드를 제공할 때 조금 더 깊게 생각해 보는 습관이 중요

 

https://cheese10yun.github.io/lombok/

 

실무에서 Lombok 사용법 - Yun Blog | 기술 블로그

실무에서 Lombok 사용법 - Yun Blog | 기술 블로그

cheese10yun.github.io

 

 

 

반응형