Lombok: @Value ๋ฐ @FieldDefaults๋Š” ์ •์  ํ•„๋“œ๋ฅผ ๊ฑด๋„ˆ๋›ฐ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 12์›” 05์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: projectlombok/lombok

@Value ๋ฐ @FieldDefaults ๋Š” ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ํ•„๋“œ์— ๊ฐœ์ธ ๋ฐ ์ตœ์ข… ์ˆ˜์ •์ž๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ @NonFinal ๋ฐ @PackagePrivate ๋ฐ›์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ•„๋“œ์˜ ๊ฒฝ์šฐ ์ด๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒจํ‚ค์ง€ private static non-final ํ•„๋“œ์˜ ๊ฒฝ์šฐ @Value ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ถ€์ž‘์šฉ์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ €๋Š” Lombok JAR์„ 1.16.10์—์„œ 1.16.16์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด "์ˆ˜์ •"์œผ๋กœ ์ธํ•ด ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์˜ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” @UtilityClass ๋ฐ @FieldDefaults(makeFinal = true, level = AccessLevel.PUBLIC) ๋ฅผ ๋„ฃ์–ด ํด๋ž˜์Šค๊ฐ€ ๋‚ด ์ƒ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ๋‚ด ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ์ค‘๋‹จ๋˜์—ˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ์— Lombok์„ ์“ธ๋ชจ์—†๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋˜๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

@FieldDefaults์—์„œ ์ •์  ํ•„๋“œ์— ๋Œ€ํ•œ ์„ ํƒ์  ์ง€์›์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ €๋Š” Lombok JAR์„ 1.16.10์—์„œ 1.16.16์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด "์ˆ˜์ •"์œผ๋กœ ์ธํ•ด ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์˜ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” @UtilityClass ๋ฐ @FieldDefaults(makeFinal = true, level = AccessLevel.PUBLIC) ๋ฅผ ๋„ฃ์–ด ํด๋ž˜์Šค๊ฐ€ ๋‚ด ์ƒ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ๋‚ด ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ์ค‘๋‹จ๋˜์—ˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ์— Lombok์„ ์“ธ๋ชจ์—†๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋˜๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€: "POJO bean"(์˜ˆ: <strong i="5">@Entity</strong> @Data ์ง๋ ฌํ™” ๊ฐ€๋Šฅ ํด๋ž˜์Šค)์—์„œ Lombok์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ @FieldDefaults(level = AccessLevel.PRIVATE) ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ serialVersionUID ๊ฐ€ ๋น„๊ณต๊ฐœ์ž„์„ ์ˆ˜๋™์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์‹ค ์ €๋Š” "lombok.config" ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ํ”„๋กœ์ ํŠธ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด ๋ชจ๋“  ์ •์  ํ•„๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ˆ˜๋™์œผ๋กœ ๋น„๊ณต๊ฐœ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค...

2๊ฐœ์˜ ์ž‘์€ ๊ฒƒ(์ด์ „ ๊ฒŒ์‹œ๋ฌผ๊ณผ ๊ฒฐํ•ฉ)์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์ƒˆ๋กœ(์ง€๋‚œ 2๋…„) ์ƒ์„ฑ๋œ ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(์ตœ์†Œ 12๊ฐœ)์ด Lombok์„ ํฌํ•จํ•œ ์ƒ์œ„ Maven ์ข…์†์„ฑ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฐ€ ์ผํ•˜๊ณ  ์žˆ๋Š” ํฐ ํšŒ์‚ฌ์—์„œ , ์ˆ˜์ •์˜ ์™•์€ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ํ•  ์ผ์ด ๋ณ„๋กœ ์—†์Šต๋‹ˆ๋‹ค...

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰