-
๐ฅ๏ธ Computer science/: Software๐ฉ๐ป๐ป
๋ฃธ๋ถ(Lombok) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? InteliJ ์ค์น/ ์์ฃผ ์ฌ์ฉ๋์ผ ํ , ์ง์๋์ด์ผ ํ ๋ฃธ๋ถ ์ด๋ ธํ ์ด์
2023. 10. 11.
Lombok ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- java ์ฝ๋๋ฅผ ์ปดํ์ผ ํ ๋ ์๋์ผ๋ก ์ถ๊ฐ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ ์ปดํ์ผํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ฌ๋ฌ๊ฐ์ง ์ด๋ ธํ ์ด์ ์ ์ ๊ณตํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋๋ฅผ ์ปดํ์ผ๊ณผ์ ์์ ์์ฑํด ์ฃผ๋ ๋ฐฉ์์ผ๋ก ๋์→ ์ฆ ์ฝ๋ฉ ๊ณผ์ ์์๋ ๋กฌ๋ณต๊ณผ ๊ด๋ จ๋ ์ด๋ ธํ ์ด์ ๋ง ๋ณด์ด๊ณ getter์ setter ๋ฉ์๋ ๋ฑ์ ๋ณด์ด์ง ์์ง๋ง ์ค์ ๋ก ์ปดํ์ผ๋ ๊ฒฐ๊ณผ๋ฌผ(.class)์๋ ์ฝ๋๊ฐ ์์ฑ๋์ด ์๋ค๋ ๋ป
์ธํ ๋ฆฌ์ ์ด Lombok ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
- Lombok plugin ์ค์น
File → Settings → Plugins → Marketplace์ lombok์ ๊ฒ์ํ๊ณ ์ค์น/ IDE ์ฌ์์
2. Dependency ์ค์
(1) ์๋์ถ๊ฐ : ์ธํ ๋ฆฌ์ ์ด์์ ๋ฃธ๋ถ ์ด๋ ธํ ์ด์ ์ฌ์ฉํ์ ๋ ๋์ค๋ ๋์๋ง๋ก ์ธํ
(2) Maven ์ค์
pom.xmlํ์ผ์ ๋ค์ ํ๊ทธ ์์ฑ
org.projectlombok lombok 1.18.4 provided
(3) Gradle ์ค์
build.gradle ํ์ผ์ ๋ค์ ์ฝ๋ ์ถ๊ฐ
dependencies { # lombok plugin implementation('org.projectlombok:lombok') annotationProcessor('org.projectlombok:lombok') # test ํ๊ฒฝ testImplementation('org.projectlombok:lombok') testAnnotationProcessor('org.projectlombok:lombok') }
3. Lombok ์ด๋ ธํ ์ด์ ํ์ฑํ
File(๋งฅ๋ถ์ InteliJ) > Setting > Build, Execution, Deployment > Compiler > Annotation Processors ์์ Enable annotation processing์ ์ฒดํฌ
์์ฃผ ์ฐ๋ Annotation
์์ฑ์ ๊ด๋ จ
@NoArgsConstructor : ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์์ฑ
@RequiredArgsConstructor : final ํ๋๋ง ํฌํจ๋ ์์ฑ์๋ฅผ ์์ฑ
@AllArgsConstructor : ๋ชจ๋ ํ๋๋ฅผ ํฌํจํ ์์ฑ์๋ฅผ ์์ฑ
๋ฉ์๋ ๊ด๋ จ
@Getter : Getter๋ฅผ ์๋์ผ๋ก ์์ฑ
@Setter : Setter๋ฅผ ์๋์ผ๋ก ์์ฑ
@ToString : toString ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์์ฑ
@EqualsAndHashCode : equals, hashCode ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์์ฑ
@With : with ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์์ฑ
ํตํฉ ๊ธฐ๋ฅ
@Data : ์ฌ๋ฌ ์ด๋ ธํ ์ด์ ํตํฉ
@ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor ๊ธฐ๋ฅ์ ํจ๊ป ์ ๊ณต
@Value : @Data์ ๋ณํ๋ ๊ธฐ๋ฅ
๋ชจ๋ ํ๋๋ฅผ private final๋ก ์ค์ , ํด๋์ค๋ฅผ final๋ก ์ค์ , Setter๋ฅผ ์์ฑํ์ง ์๋๋ค.
- staticConstructor : final ๋ณ์๋ก ์ด๋ฃจ์ด์ง static ์์ฑ์๋ฅผ ๋ง๋ ๋ค. (@RequiredArgsConstructor๋ฅผ private๋ก ์์ฑ)
๋น๋ ํจํด
@Builder : ๋ฉ์๋ ์ฒด์ด๋์ ์ด์ฉํ๋ static ๋ฉ์๋ builder()๋ฅผ ์์ฑํ๋ค.
์์ฑ์ ๋์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ
@Builder.Default : ๋ช ์์ ์ผ๋ก ๊ธฐ๋ณธ๊ฐ ์ค์
@Singular : ํด๋น ํ๋๋ฅผ ์ปฌ๋ ์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ๋ค์์ ๊ฐ์ ํ ๋นํ ์ ์๋ค.
๊ทธ ์ธ
@NonNull : null-check ๋ก์ง์ ์๋์ผ๋ก ์์ฑํ์ฌ null ๊ฐ์ด ๋์ด์จ ๊ฒฝ์ฐ NulPointerException ๋ฐ์
@Cleanup : ํด๋น ์์ญ์ ๋ฒ์ด๋ ๋ ์ง์ ๋ ๋ฆฌ์์ค์ close()๋ฅผ ํธ์ถ
try-finally ๊ตฌ๋ฌธ์ด ์ ์ฉ๋๋ค.
@Synchronized : java์ synchronized์ ๋ ์์ ํ๊ฒ ๋ณํ๋ ๊ธฐ๋ฅ
static, instance ๋จ์๋ก ๋ฝ์ ๊ฑฐ๋ synchronized์ ๋ค๋ฅด๊ฒ ํ๋ ๋จ์๋ก ๋ฝ์ ๊ฑด๋ค. (๋ฉ์๋์๋ง ์ฌ์ฉ ๊ฐ๋ฅ)
@SneakyThrows(์์ธํด๋์ค) : try-catch ๋ฌธ๋ฒ์ผ๋ก ํด๋น ์์ธ๋ฅผ ์ฒ๋ฆฌ
Checked Exception ์ฒ๋ฆฌ์ ์ ์ฉ
@Log, @CommonsLog, @Log4j2, @Slf4j ๋ฑ...
๋ก๊ทธ ํ๋ ์์ํฌ๋ฅผ log๋ผ๋ ์ด๋ฆ์ private static final ํ๋๋ก ์์ฑ
์ง์ํด์ผ ํ Annotation
@AllArgsConstructor
@Data
@NoArgsConstructor
@Builder
Lombok - ์ง์ํด์ผ ํ annotation
'๐ฅ๏ธ Computer science > : Software๐ฉ๐ปโ๐ป' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ณDocker์ ์ปจํ ์ด๋ (0) 2023.04.09 ๋๊ธ