티스토리 뷰

Java 프로젝트를 만드는 분들에게 유용한 라이브러리입니다.

컴파일 시점에서 특정 Annotation으로 코드를 추가하는 라이브러리이죠.

저는 대표적으로 setter와 getter를 만들어서 사용하고 있고 이렇게 만든 코드는 Kotlin의 property를 사용하는 것과 흡사해져서 가독성과 유지보수에 도움이 될것 같긴 하네요.

 

하지만 이것 자체를 남발하기 쉽기 때문에 사용법을 조금은 알아두는 것이 좋을것 같습니다.

@Data

많은 것들을 내포하고 있습니다. 많죠...

@ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 사용하게 됩니다.

이것들중에 특정 부분을 제외하는 방법도 제공을 하는데요.

@ToString(exclude = "name") 처럼 사용을 합니다.

의미는 person이름을 가진 변수에 대해서는 ToString을 빼고 지원을 한다입니다.

그렇지만 웬만하면 사용하지 않는것이 좋다고 합니다.

@Data
@ToString(exclude = "name")
public class Person {
	...
}

 

@Getter / @Setter

말 그대로 setter와 getter를 만들어 줍니다.

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

 

AccessLevel이 존재하는데요 이것을 지정하지 않으면 접근 제한자는 Public이 됩니다.

다음과 같이 지정이 가능해요

public class Person {
    @Getter(AccessLevel.PRIVATE)
    @Setter
    private String name;
}

 

@NoArgsConstructor

생성자를 Paramete가 없는 생성자를 자동으로 생성하여 주는 Annotation 입니다.

@NoArgsConstructor(access = AccessLevel.PUBLIC)
public class Person {
	...
}

주의 할 점이 있는데요.

1. field가 final로 되어 있을 경우에는 초기화를 할 수 없어서 생성자를 만들지 못하고 에러가 발생합니다. 해결 방법은 @NoArgsConstructor(force = true) 옵션을 이용하여 field들을 초기화를 강제로 시켜주는 방법이 있습니다.

2. @NonNull같이 필드에 제약 조건이 설정되어 있다면, 자동으로 생성이 되지 않습니다. 초기화를 진행하기 전까지 null-check 로직이 발생하지 않는 점을 염두하고 코드를 개발해야 합니다.

@RequiredArgsConstructor

추가 작업을 필요로 하는 필드에 대한 생성자를 생성하는 Annotation 입니다.

무슨말인가 하면 위에 NoArgsConstructor처럼 초기화를 하여야 하는 상황이 발생을 하게 되면 초기화가 되지 않은 final field, @NonNull로 마크되어 있는 모든 필드들에 대한 생성자를 자동으로 생성하여 줍니다.

@NonNull로 마크되어 있는 필드들은 null check를 추가적으로 생성하며, @NonNull이 마크되어 있지만 파라메터에서 null값이 들어온다면 생성자에서 NullPointException이 발생하게 된다고 합니다.

@AllArgsConstructor

클래스에 존재하는 모든 field에 대한 생성자를 생성하여 줍니다.

만약 field중에 @NonNull Annotation이 있다면 RequiredArgsConstructor와 마찬가지로 생성자 내에서 null check 로직을 자동적으로 생성하여 줍니다.

비슷한 것으로는 Builder가 있을 것 같습니다.

@Builder

위에서 말한거처럼 All과 동일한 효과를 발생시켜줍니다. 모든 멤버에 대해서 매개변수를 받는 기본 생성자를 만들어 줍니다.

@Builder
public class Person {
	...
}

다음과 같이 생성자를 하나 만들고 그 위에 만들어 주는 방법도 있을 것 같은데요. 이렇게 하게 되면 name과 email만 받을수 있게 됩니다. 이 방법이 더 좋지 않을까 싶긴 합니다.

public class Person {
	
	@Builder 
	public Person(String name, String email) {
		this.name = name;
		this.email = email;
	}
}

static constructor를 생성

Constructor Annotation들에는 옵션을 줄수 있는데요. static factory를 만들어주는 옵션이 존재합니다. @[Annotation](staticName = "at")

@RequiredArgsConstructor(staticName = "at")
public class Test {
    ...
}

IntelliJ Plugin 설치

저렇게만 설치하고 사용하면 그냥 되는것이 아닙니다.

해놓고 setName 쳐봐야 아무리 해도 안됩니다. 오류가 나고요.

그래서 플러그인을 설치하여 주어야 합니다.

환경설정 Preferences에 갑니다.

Plugins에 lombok를 넣어주고 다 설치되면 IntelliJ를 재실행 합니다.

 

'Language > Java' 카테고리의 다른 글

homebrew를 이용하여 OpenJDK 설치하여 보자  (0) 2020.01.17
jar와 war의 차이  (0) 2020.01.14
Java. Lombok!  (0) 2018.05.31
Java 코딩 규칙  (0) 2018.01.08
[Java] Java 버전 분류  (0) 2016.12.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함