#1. Lombok ๊ธฐ๋ฅ
1. @Getter๋ @Setter
@Getter๋ @Setter๋ฅผ ํด๋์ค ์๋จ์ ์ถ๊ฐํ๋ฉด lombok์ด ํด๋น๋๋ ํ๋๋ค์ ๋ํ ๊ธฐ๋ณธ getter/setter๋ฅผ ์์ฑํด ์ค๋๋ค.
@Getter, @Setter์๋ ์ ๊ทผ์ ํ์๋ฅผ ๊ฐ ํ๋๋ง๋ค ์ค์ ํ ์๋ ์์ต๋๋ค.
๋ง์ฝ ์์ฑ๋๋ getter/setter์ ๋ช
์์ ์ผ๋ก AccessLevel์ ๋ช
์ํด์ฃผ์ง ์์ผ๋ฉด, ์ ๊ทผ ์ ํ์๋ public์ด ๋ฉ๋๋ค.
ํ์ฉ๋๋ access level๋ค์ PUBLIC, PROTECTED, PACKAGE, PRIVATE๊ฐ ์์ต๋๋ค.
2. @NoArgsConstructor
์ด ์ด๋
ธํ
์ด์
์ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ์์ฑ์๋ฅผ ์์ฑํฉ๋๋ค.
@NoArgsConstructor์ ์ฌ์ฉํ ๋๋ ์๋์ ๊ฐ์ ์ฃผ์์ ์ด ์์ต๋๋ค.
- ํ๋๋ค์ด final๋ก ์์ฑ๋์ด ์๋ ๊ฒฝ์ฐ์๋ ํ๋๋ฅผ ์ด๊ธฐํํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ฑ์๋ฅผ ๋ง๋ค ์ ์๊ณ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ์ด ๋๋ @NoArgsConstructor(force = true) ์ต์
์ ์ด์ฉํด์ final ํ๋๋ฅผ 0, false, null ๋ฑ์ผ๋ก ์ด๊ธฐํ๋ฅผ ๊ฐ์ ๋ก ์์ผ์ ์์ฑ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- @NonNull ๊ฐ์ด ํ๋์ ์ ์ฝ์กฐ๊ฑด์ด ์ค์ ๋์ด ์๋ ๊ฒฝ์ฐ, ์์ฑ์ ๋ด null-check ๋ก์ง์ด ์์ฑ๋์ง ์์ต๋๋ค. ํ์ ์ด๊ธฐํ๋ฅผ ์งํํ๊ธฐ ์ ๊น์ง null-check ๋ก์ง์ด ๋ฐ์ํ์ง ์๋ ์ ์ ์ผ๋ํ๊ณ ์ฝ๋๋ฅผ ๊ฐ๋ฐํด์ผ ํฉ๋๋ค.
3. @RequiredArgsConstructor
์ด ์ด๋
ธํ
์ด์
์ ์ถ๊ฐ ์์
์ ํ์๋ก ํ๋ ํ๋์ ๋ํ ์์ฑ์๋ฅผ ์์ฑํ๋ ์ด๋
ธํ
์ด์
์
๋๋ค. ์ด๊ธฐํ๋์ง ์์ ๋ชจ๋ final ํ๋, @NonNull๋ก ๋งํฌ๋์ด์๋ ๋ชจ๋ ํ๋๋ค์ ๋ํ ์์ฑ์๋ฅผ ์๋์ผ๋ก ์์ฑํด์ค๋๋ค. @NonNull๋ก ๋งํฌ๋์ด์๋ ํ๋๋ค์ null-check๊ฐ ์ถ๊ฐ์ ์ผ๋ก ์์ฑ๋๋ฉฐ, @NonNull์ด ๋งํฌ๋์ด ์์ง๋ง, ํ๋ผ๋ฏธํฐ์์ null๊ฐ์ด ๋ค์ด์จ๋ค๋ฉด ์์ฑ์์์ NullPointerException์ด ๋ฐ์ํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ์ ์์๋ ํด๋์ค์ ์๋ ํ๋ ์์์ ๋ง์ถฐ์ ์์ฑ๋ฉ๋๋ค.
4. @AllArgsConstructor
์ด ์ด๋
ธํ
์ด์
์ ํด๋์ค์ ์กด์ฌํ๋ ๋ชจ๋ ํ๋์ ๋ํ ์์ฑ์๋ฅผ ์๋์ผ๋ก ์์ฑํด์ค๋๋ค.
์ถ์ฒ๋ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํด์ฃผ์ธ์.