DTO์ Noargs ์ฌ์ฉํ๋์ด์ ์ aceessLevel Protected์ ์ฌ์ฉํ๋์ด์
@Getter
@NoArgsConstructor(access= AccessLevel.PROTECTED)
public class SignUpRequestDto {
private String email;
private String password;
}
๐ ์ด๋ฌํ DTO์์ ์ต๊ด์ ์ผ๋ก @NoArgsConstructor ๋ฅผ ๋ถ์ฌ์ ์ฌ์ฉํ๊ณค ํ๋๋ฐ,
์ฌ์ฉํ๋ ์ด์ ๋ฅผ ์ ๋๋ก ์์ง ๋ชปํด์ ์ด๋ฒ ๊ธฐํ์ ์ ๋๋ก ์์๋ณด๊ณ ์ ํ๋ค.
์ฐ์ , ๊ธฐ๋ณธ ์์ฑ์๊ฐ ํ์ํ ์ด์ ๋ฅผ ์๊ธฐ ์ํด์๋
์คํ๋ง์ด ์ด๋ป๊ฒ Dto๋ฅผ JSON์ผ๋ก ๋งตํํ๋์ง ๊ทธ ์๋ฆฌ๋ฅผ ์์์ผ ํ๋ค.
์คํ๋ง์ ๋ฐ๋ก Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ObjectMapper๋ฅผ ์ฌ์ฉํ์ฌ JSON์ผ๋ก ๋งตํํ๋ค!
ObjectMapper๋ ์ง๋ ฌํ(serialize), ์ญ์ง๋ ฌํ(deserialize)๋ฅผ ์ํํ๋๋ฐ,
์ด๋ ์ง๋ ฌํ๋ Java Object → JSON์ผ๋ก ํ์ฑํ๋ ๊ฒ,
์ญ์ง๋ ฌํ๋ JSON → Java Object๋ก ํ์ฑํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ปจํธ๋กค๋ฌ์์ DTO๋ฅผ @RequestBody๋ฅผ ํตํด ๊ฐ์ ธ์ฌ ๋, ๋ฐ์ธ๋ฉ์ ObjectMapper๊ฐ ์ํํ๋ค.
์ด๋ ๊ฒ ObjectMapper๊ฐ ์ง๋ ฌํ, ์ญ์ง๋ ฌํ๋ฅผ ์ํํ์ฌ ๋งตํํ ๋,
DTO๋ฅผ DTO์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ๊ฒ ๋๋ค.
์ด๋ฌํ ๊ณผ์ ์์ DTO์ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์๋ค๋ฉด, ๋งตํ ์ค๋ฅ๊ฐ ๋๋ ๊ฒ์ด๋ค.
โป ์ถ๊ฐ์ ์ผ๋ก, DTO์ ํ๋๋ค์ ObjectMapper์ Setter ๋๋ Getter๋ก ๊ฐ์ ธ์จ๋ค!
๋ํ, Setter๋ก DTO ํ๋๋ค์ ์ฃผ์ ์ ํ๋ ๊ฒ์ด ์๋๋ผ reflection์ด๋ผ๋ ๊ธฐ๋ฅ์ ํตํด
๊ฐ์ ์ฃผ์ ํ๋ฏ๋ก Setter๋ ๋ฑํ ํ์๊ฐ ์๋ค.
๋ฐ๋ผ์, Getter๋ง ์์ฑํ์ฌ ๊ฐ๋ฐฉํ์ ์์น์ ๋ง์ถฐ์
์ํํธ์จ์ด ์ํฐํฐ๊ฐ ํ์ฅ์๋ ์ด๋ ค ์์ด์ผ ํ์ง๋ง ์์ ์๋ ๋ซํ ์์ด์ผ ํ๋ค.
๋ด์ฉ์ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- @NoArgsConstructor(access = AccessLevel.PUBLIC)
- ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ด์ฉํ์ฌ, ๊ฐ์ ์ฃผ์ ํ๋ ๋ฐฉ์์ ์ต๋ํ ๋ฐฉ์งํ๊ธฐ ์ํด์ ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์๋๋ค.
- @NoArgsConstructor(access = AccessLevel.PROTECTED)
- ์, ์๋์ ๊ฐ์ ํ๋ก์ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๊ฐ์ฒด์ ๋ํ ์ ๊ทผ ๋ฒ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
- @NoArgsConstructor(access = AccessLevel.PRIVATE)
- ํ๋ก์ ๊ฐ์ฒด ์์ฑ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์๋๋ค.
๋ด๊ฐ @NoargsConstructor (access = AccessLevel.PROTECTED)๋ฅผ ์์ฑํ๋ ์ด์
๋ต์ ์ ๊ทผ ๊ถํ์ Private๋ก ํ๋ฉด ํ๋ก์ ๊ฐ์ฒด ์์ฑ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ณ , ์ ๊ทผ ๊ถํ์ Public์ผ๋ก ํ๋ฉด ๋ฌด๋ถ๋ณํ ๊ฐ์ฒด ์์ฑ ๋ฐ setter๋ฅผ ํตํ ๊ฐ ์ฃผ์ ์ ํ ์ ์๊ธฐ์ ์ ๊ทผ ๊ถํ์ Protected๋ก ์์ฑ ํ๋ ๊ฒ์ด๋ค.