[250118] Jackson ์ญ์ง๋ ฌํ ์๋ฌ ๋ฐ์

1. ๋ฌธ์ ์ํฉ
- PasswordVerifyRequestDto ํด๋์ค์์ Jackson ์ญ์ง๋ ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๐จ ์ค๋ฅ ์ด๋ฏธ์ง ์ฒจ๋ถ

2. ์์ธ ๋ถ์
1) PasswordVerifyRequestDto ํด๋์ค์ ํ๋๊ฐ ํ๋์ธ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฐ์
- Jackson์ ํด๋์ค์ ํ๋๊ฐ ํ๋๋ง ์๋ ๊ฒฝ์ฐ, JSON ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ์ญ์ง๋ ฌํํ ๋ ์ด๋ค ์์ฑ์๋ฅผ ์ฌ์ฉํ ์ง ๋ช ํํ ์์ง ๋ชปํ๋ค.
2) final ํ๋์ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฐ์
- ํด๋์ค๊ฐ final ํ๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์๋ ๊ฒฝ์ฐ, Jackson์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
โ Jackson์ ๋์ ๋จ๊ณ?
1. ๊ธฐ๋ณธ ์์ฑ์ ํธ์ถ: JSON ๋ฐ์ดํฐ๋ฅผ ๋งคํํ๊ธฐ ์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑ.
2. Setter ๋๋ Reflection ์ฌ์ฉ: ์์ฑ๋ ๊ฐ์ฒด์ JSON ๋ฐ์ดํฐ๋ฅผ ๋งคํ.
โก๏ธ ๊ทธ๋ฌ๋ ํด๋์ค๊ฐ final ํ๋๋ฅผ ๊ฐ์ง๋ฉด Reflection์ ์ฌ์ฉํ ์ ์๊ณ ๊ธฐ๋ณธ ์์ฑ์๋ ์์ผ๋ฏ๋ก Jackson์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค!
3. ํด๊ฒฐ ๋ฐฉ์
๋ฐฉ๋ฒ1. @JsonCreator์ @JsonProperty๋ฅผ ์ฌ์ฉํ ๋ช ์์ ๋งคํ -----> ์ฑํ!
•@JsonCreator๋ฅผ ํตํด Jackson์๊ฒ ์ด๋ค ์์ฑ์๋ฅผ ์ฌ์ฉํ ์ง ์๋ ค์ค๋ค.
•@JsonProperty๋ก JSON ํค์ ์์ฑ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋งคํํ์ฌ ์ญ์ง๋ ฌํ๋ฅผ ์ฒ๋ฆฌํ๋ค.

๋ฐฉ๋ฒ2. ๊ธฐ๋ณธ ์์ฑ์ ์ถ๊ฐ (๋จ, final ์ ๊ฑฐ ํด์ผํจ...ใ
)
•๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ถ๊ฐํ๊ณ final ํค์๋๋ฅผ ์ ๊ฑฐํ์ฌ ์ญ์ง๋ ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
•๊ทธ๋ฌ๋ ์ด๋ ํด๋์ค์ ๋ถ๋ณ์ฑ์ ๊นจ๋จ๋ฆด ์ ์์ด ์ถ์ฒํ์ง ์๋๋ค๊ณ ํ๋ค.
โ ์ final์ ์ฌ์ฉํด์ผ ํ์ง?
final ํ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ถ๋ณ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ค!
- ๋ฉํฐ์ค๋ ๋ ํ๊ฒฐ์์ ์์
- ์์ธก ๊ฐ๋ฅํ ์ํ๋ฅผ ์ ์ง
- ๊ฐ์ฒด์ ์๋ํ์ง ์์ ๋ณ๊ฒฝ์ ๋ฐฉ์ง

4. ๊ฒฐ๊ณผ
@JsonCreator์ @JsonProperty๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ(๋ฐฉ๋ฒ 1)์ ์ ํํ๋ค.
- ์ด๋ ๋ถ๋ณ์ฑ์ ์ ์งํ๋ฉฐ, Jackson ์ญ์ง๋ ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ณ ,
- ๊ฐ์ฒด์ ์์ ์ฑ์ ์ ์งํ์ฌ ์์ธก ๊ฐ๋ฅํ ์ค๊ณ๋ฅผ ๋ณด์ฅํ ์ ์๋ค!
