Search

lombok μ„€μΉ˜ν•˜κΈ°

lombok μ„€μΉ˜ν•˜κΈ°

lombok μ΄λž€?

: μƒμ„±μž, getter/setter λ©”μ†Œλ“œ, toString() λ©”μ†Œλ“œ 등을 μžλ™μœΌλ‘œ λ§Œλ“€μ–΄μ£ΌλŠ” 라이브러리
lombok은 μžλ°” μ–Έμ–΄μ˜ 반볡적인 μ½”λ“œλ₯Ό 쀄이고 개발 생산성을 ν–₯μƒμ‹œν‚€κΈ° μœ„ν•œ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. μ£Όμš” κΈ°λŠ₯μœΌλ‘œλŠ” μžλ™ μƒμ„±μž, getter/setter λ©”μ„œλ“œ μžλ™ 생성, λΆˆν•„μš”ν•œ μ½”λ“œ 제거 등이 μžˆμŠ΅λ‹ˆλ‹€. lombok을 μ‚¬μš©ν•˜λ©΄ μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ μœ μ§€ν•  수 있고, 개발 μ‹œκ°„μ„ λ‹¨μΆ•μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

lombok μ„€μΉ˜ 및 연동

2.
lombok μ‹€ν–‰
-- (CMD) cd ~/lib java -jar lombok.jar
Shell
볡사
3.
IDE 경둜 지정
4.
lombok 라이브러리 ν”„λ‘œμ νŠΈμ— μΆ”κ°€
a.
μžλ°” ν”„λ‘œμ νŠΈ - build path > lib > add external jar
b.
μŠ€ν”„λ§ ν”„λ‘œμ νŠΈ (maven, gradle) - μ˜μ‘΄μ„± μΆ”κ°€

μ˜μ‘΄μ„± μΆ”κ°€

Maven Repository
Maven Repository은 Maven ν”„λ‘œμ νŠΈμ˜ 쒅속성을 κ΄€λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” 온라인 λ¦¬ν¬μ§€ν† λ¦¬μž…λ‹ˆλ‹€. Maven Repositoryμ—μ„œλŠ” λ‹€μ–‘ν•œ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ μ’…μ†μ„±μ˜ 정보λ₯Ό κ²€μƒ‰ν•˜κ³ , ν•„μš”ν•œ μ’…μ†μ„±μ˜ 버전 및 λ‹€μš΄λ‘œλ“œ 링크λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
Maven RepositoryλŠ” Maven ν”„λ‘œμ νŠΈμ˜ κ°œλ°œμžλ“€μ΄ ν•„μš”ν•œ 라이브러리λ₯Ό 효율적으둜 κ²€μƒ‰ν•˜κ³  관리할 수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.
β€’
lombok 1.18 μ˜μ‘΄μ„± λ°”λ‘œκ°€κΈ°

maven ν”„λ‘œμ νŠΈμ˜ 경우

β€’
pom.xml
β†’ <dependencies> ν•˜μœ„ νƒœκ·Έλ‘œ μΆ”κ°€
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency>
XML
볡사

gradle ν”„λ‘œμ νŠΈμ˜ 경우

β€’
build.gradle
β†’ dependencies { } 블둝 μ•ˆμ— μΆ”κ°€
compileOnly 'org.projectlombok:lombok:1.18.30'
Shell
볡사
λΉŒλ“œλ„κ΅¬?
λΉŒλ“œλ„κ΅¬λž€ μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œκ³Όμ •μ—μ„œ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜κ³ , ν…ŒμŠ€νŠΈν•˜κ³ , νŒ¨ν‚€μ§•ν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ μžλ™ν™”ν•˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€. μ£Όμš”ν•œ λΉŒλ“œλ„κ΅¬λ‘œλŠ” Mavenκ³Ό Gradle이 μžˆμŠ΅λ‹ˆλ‹€. 이 도ꡬ듀은 ν”„λ‘œμ νŠΈμ˜ 쒅속성 관리, λΉŒλ“œ ν”„λ‘œμ„ΈμŠ€ μ„€μ •, ν…ŒμŠ€νŠΈ μ‹€ν–‰ 등을 νŽΈλ¦¬ν•˜κ²Œ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

pom.xml

: maven λΉŒλ“œλ„κ΅¬μ˜ ν”„λ‘œμ νŠΈ λΉŒλ“œ μ„€μ •νŒŒμΌ

build.gradle

: grdle λΉŒλ“œλ„κ΅¬μ˜ ν”„λ‘œμ νŠΈ λΉŒλ“œ μ„€μ •νŒŒμΌ
λΉŒλ“œλ„κ΅¬λ₯Ό μ΄μš©ν•œ ν”„λ‘œμ νŠΈμ—μ„œλŠ” λΉŒλ“œ μ„€μ •νŒŒμΌμ— ν”„λ‘œμ νŠΈμ˜ ꡬ쑰, μ˜μ‘΄μ„±, λΉŒλ“œ μ„€μ • 등을 μ •μ˜ν•©λ‹ˆλ‹€.
Restart ν•˜μ§€λ§κ³ , Exit μ•„μ˜ˆ μ’…λ£Œν•˜κ³  λ‹€μ‹œ μ‹€ν–‰ν•΄λ³΄μ„Έμš”.

μ½”λ“œ μž‘μ„±

Test.java

import lombok.Data; @Data // getter, setter, μƒμ„±μž 등을 μžλ™ μƒμ„±ν•˜λŠ” μ–΄λ…Έν…Œμ΄μ…˜ public class Test { private String id; private String name; private int age; }
Java
볡사

lombok μ–΄λ…Έν…Œμ΄μ…˜

μ–΄λ…Έν…Œμ΄μ…˜
μ„€λͺ…
@Getter
Getter λ©”μ„œλ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.
@Setter
Setter λ©”μ„œλ“œλ₯Ό μžλ™μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€.
@ToString
toString λ©”μ„œλ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@EqualsAndHashCode
equals 및 hashCode λ©”μ„œλ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@NoArgsConstructor
λ§€κ°œλ³€μˆ˜ μ—†λŠ” κΈ°λ³Έ μƒμ„±μžλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@AllArgsConstructor
λͺ¨λ“  ν•„λ“œλ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ λ°›λŠ” μƒμ„±μžλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@Data
@Getter, @Setter, @ToString, @EqualsAndHashCode, @NoArgsConstructor, @AllArgsConstructor을 λͺ¨λ‘ ν¬ν•¨ν•œ μ’…ν•© μ–΄λ…Έν…Œμ΄μ…˜μž…λ‹ˆλ‹€.
@Builder
λΉŒλ” νŒ¨ν„΄μ„ μ§€μ›ν•˜λŠ” λΉŒλ” λ©”μ„œλ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@Slf4j
SLF4J λ‘œκΉ…μ„ μœ„ν•œ Logger ν•„λ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
@Value
λΆˆλ³€(immutable) 클래슀λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. Getter만 μƒμ„±λ˜κ³  Setterκ°€ μƒμ„±λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
@Cleanup
μžμ› ν•΄μ œλ₯Ό μžλ™μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” μ–΄λ…Έν…Œμ΄μ…˜μœΌλ‘œ, try-with-resources νŒ¨ν„΄μ„ κ΅¬ν˜„ν•©λ‹ˆλ‹€.