일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- database
- API
- 애자일기법
- Java
- 코드
- 스프링
- 엘라스틱서치
- framework
- 그리디알고리즘
- JPA
- 자바
- 애자일
- Baekjoon
- cleancode
- ES
- 코딩테스트
- Spring
- 알고리즘
- 데이터베이스
- 읽기쉬운코드
- 백준
- 애자일프로그래밍
- 개발
- 프레임워크
- 그리디
- Elasticsearch
- 코딩
- 클린코드
- 개발자
- spring boot
- Today
- Total
튼튼발자 개발 성장기🏋️
#18 : Lombok 본문
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를 열어서 해당 경로로 들어간다.
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이 실행되면 상기 내용과 같은 창이 뜰 것이다. Specify location 버튼을 클릭하고 본인의 IDE를 추가하여 install 버튼을 클릭하면 준비가 끝난다.
이제 Lombok으로 getter와 setter를 사용해보자. 다시 STS로 돌아가자. 많은 어노테이션을 제공해주지만, 대표적인 @Data와 @Getter, @Setter를 알아본다.
- @Data
우리는 아주 가끔 Getter와 Setter를 미리 다 만들어 놓기도 한다. 그때 사용하는 것이 @Data 어노테이션이다. 해당 어노테이션은 Getter와 Setter를 전부 다 만들어 준다. 사용 예는 다음과 같다.
그러나 코드가 만들어 지지는 않는다. 이 것이 가장 큰 특징인데, outline을 보게되면 추가된 것을 볼 수 있다. 실제로 auto assist에서도 사용할 수 있다!
그러나 getter와 setter를 남발하는 것은 좋은 코드가 될 수 없을 것이다. 우리는 꼭 필요한 녀석만 생성해서 깔끔하고 보기 좋은 코드를 유지해야할 의무가 있다. 그래서 제공해주는 기능이 @Getter와 @Setter 어노테이션이다.
- @Getter
딱 봐도 알겠다. Getter만 만들어주는 어노테이션이다.
- @Setter
딱 봐도 알겠다. Setter만 만들어주는 어노테이션이다.
Lombok은 이러한 기능 뿐아니라, 병렬 프로그램을 위한 동기화 등을 위해 제공되는 기능이 더 있다. 해당 내용이 궁금하다면 다음 홈페이지에서 확인해보자.
- http://jnb.ociweb.com/jnb/jnbJan2010.html
'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 |