@Value
๋ฐ @FieldDefaults
๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ํ๋์ ๊ฐ์ธ ๋ฐ ์ต์ข
์์ ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ด ๋์์ @NonFinal
๋ฐ @PackagePrivate
๋ฐ์ต๋๋ค.
์๋ฅผ ๋ค์ด ํ๋์ ๊ฒฝ์ฐ ์ด๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํจํค์ง private static non-final ํ๋์ ๊ฒฝ์ฐ @Value
๋ฅผ ์ถ๊ฐํ๋ ์๊ธฐ์น ์์ ๋ถ์์ฉ์
๋๋ค.
@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 ์ข ์์ฑ ๊ตฌ์ฑ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ๊ฐ ์ผํ๊ณ ์๋ ํฐ ํ์ฌ์์ , ์์ ์ ์์ ์ ๋ฐ์ดํธํ ๋ ํ ์ผ์ด ๋ณ๋ก ์์ต๋๋ค...
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ ๋ Lombok JAR์ 1.16.10์์ 1.16.16์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ ์๋๋ฐ ์ด "์์ "์ผ๋ก ์ธํด ๋ชจ๋ ํ๋ก์ ํธ๊ฐ ์ข ๋ฃ๋์์ต๋๋ค.
๋์ ์์ฃผ ๊ฐ๋จํ ์ฌ์ฉ ์ฌ๋ก๋
@UtilityClass
๋ฐ@FieldDefaults(makeFinal = true, level = AccessLevel.PUBLIC)
๋ฅผ ๋ฃ์ด ํด๋์ค๊ฐ ๋ด ์์๋ฅผ ์ ์ฅํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค.์ด์ ๋ด ๋ชจ๋ ํ๋ก์ ํธ์์ ๋ชจ๋ ๊ฒ์ด ์ค๋จ๋์์ผ๋ฉฐ ์ด๋ฌํ ๊ตฌ์ฑ์ Lombok์ ์ธ๋ชจ์๊ฒ ๋ง๋ญ๋๋ค.
๋ชจ๋ ์์ ์ ์๋์ผ๋ก ์ํํ๊ธฐ ์ํด ๋๋์๊ฐ๋๋ค.