시뻘건 개발 도전기

#18 : Lombok 본문

Framework/spring

#18 : Lombok

시뻘건볼때기 2020. 7. 22. 20:19
반응형

  Spring을 쓰면서 데이터베이스에 접근할 때는 DTO는 필수조건일 것이라 생각이 든다. 나는 개인적으로 DTO를 Entity라고 생각하는 경우도 종종 있다. (그래야 이해하기 쉽기 때문...) 우리는 getter와 setter를 아주아주 자주 만들어 사용할 것이다. 굳이 spring이 아니더라도, 작은 어플리케이션 만들 때 조차 필요할 수 있다. 오죽하면 eclipse 자체에서 생성해주는 기능과 단축키까지 설정 되어 있겠는가..?ㅋㅋ 그것도 모자라서 Lombok이라고 하는 녀석은 어노테이션을 이용해서 자유롭고 편리하게 getter와 setter를 생성해서 사용할 수 있다.

  Lombok은 그냥 dependency를 걸어주고 바로 사용할 수 있는 녀석이 아니다. 사용 전에 필수 적으로 진행해야하는 절차가 있다. 그걸 한 번 알아보자.

dependencies {
	providedCompile group: 'org.projectlombok', name: 'lombok', version: '1.18.8'
	// ...
}

  step.1 먼저 상기 내용과 같이 build.gradle에 lombok을 dependency 걸어 준다. 그럼 gradle caches 디렉토리 안에 lombok이 생긴다. 만약 경로를 잘 모르겠다면 eclipse에서 Copy Qualified Name을 이용하면 쉽다. 해당 경로를 복사해서 cmd 혹은 bash를 열어서 해당 경로로 들어간다.

Copy Qualified Name 사용 방법

  step.2 cd C:/~/.gradle/~/org.projectlombok/lombok/1.18.8/448003bc1b234aac04b58e27d7755c12c3ec4236

  step.3 jar파일 하나가 보일 것이다. 이제 그 jar를 실행시켜보자.

  step.4 java -jar lombok-1.18.8.jar

Lombok 실행화면

Lombok이 실행되면 상기 내용과 같은 창이 뜰 것이다. Specify location 버튼을 클릭하고 본인의 IDE를 추가하여 install 버튼을 클릭하면 준비가 끝난다.

 

  이제 Lombok으로 getter와 setter를 사용해보자. 다시 STS로 돌아가자. 많은 어노테이션을 제공해주지만, 대표적인 @Data와 @Getter, @Setter를 알아본다.

 

- @Data

  우리는 아주 가끔 Getter와 Setter를 미리 다 만들어 놓기도 한다. 그때 사용하는 것이 @Data 어노테이션이다. 해당 어노테이션은 Getter와 Setter를 전부 다 만들어 준다. 사용 예는 다음과 같다.

@Data 사용 예

그러나 코드가 만들어 지지는 않는다. 이 것이 가장 큰 특징인데, outline을 보게되면 추가된 것을 볼 수 있다. 실제로 auto assist에서도 사용할 수 있다!

outline sample

그러나 getter와 setter를 남발하는 것은 좋은 코드가 될 수 없을 것이다. 우리는 꼭 필요한 녀석만 생성해서 깔끔하고 보기 좋은 코드를 유지해야할 의무가 있다. 그래서 제공해주는 기능이 @Getter와 @Setter 어노테이션이다.

 

- @Getter

  딱 봐도 알겠다. Getter만 만들어주는 어노테이션이다.

@Getter 사용 예

- @Setter

  딱 봐도 알겠다. Setter만 만들어주는 어노테이션이다.

@Setter 사용 예

 

 

  Lombok은 이러한 기능 뿐아니라, 병렬 프로그램을 위한 동기화 등을 위해 제공되는 기능이 더 있다. 해당 내용이 궁금하다면 다음 홈페이지에서 확인해보자.

- http://jnb.ociweb.com/jnb/jnbJan2010.html

 

SETT January 20 -

Reducing Boilerplate Code with Project Lombok by Michael Kimberlin, Senior Software Engineer Object Computing, Inc. (OCI) Contents Introduction "Boilerplate" is a term used to describe code that is repeated in many parts of an application with little alter

jnb.ociweb.com

 

반응형

'Framework > spring' 카테고리의 다른 글

배치 처리 테스트하기  (0) 2022.09.22
클라우드 네이티브 배치  (0) 2022.09.21
#17 : H2 database 연동 준비  (0) 2020.06.13
#16 : query method를 정의하자  (0) 2020.05.24
#15 : 상속 없이 repository를 만들자  (0) 2020.05.24
Comments