์๋ : ๋ฐฑ์๋ ํ๋ ์์ํฌ ์นดํ ๊ณ ๋ฆฌ๋Spring๊ณผ ๊ฐ์ ๋ฐฑ์๋ ํ๋ ์์ํฌ์ ๋ํ ์ดํด๋๋ฅผ ํ๊ฐํ๋ ์ง๋ฌธ์ ๋๋ค. ์์กด์ฑ ์ฃผ์ , AOP, ํธ๋์ญ์ ๊ด๋ฆฌ์ ๊ฐ์ ๊ฐ๋ ๋ค์ ๋ฐฑ์๋์์ ์ฝ๋๋ฅผ ๋ชจ๋ํํ๊ณ ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ํ ์ ์๋๋ก ๋์์ค๋๋ค. ๋ํ Spring Boot์ ๊ฐ์ ์ต์ ํ๋ ์์ํฌ์ ํน์ง์ ์ดํดํ๊ณ , ์ค๋ฌด์์ ์๋ ์ค์ (Auto Configuration)๊ณผ JPA๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๋์ง ๋ฌป์ต๋๋ค.
๋ต๋ณ์ ํฌํจํด์ผ ํ ํค์๋
์๋ฐ๋ ์ค๋๋ ์ ๋ขฐํ ์ ์๋ ์ธ์ด, ์ฝํ๋ฆฐ์ ํ๋์ ์ธ ์๋ฐ ์ ๊ทธ๋ ์ด๋ ๋ฒ์ ๐
์ฝํ๋ฆฐ์ด ์๋ฐ๋ณด๋ค ์ข์ ์
-๊ฐ๊ฒฐํจ -> var, val ์ฌ์ฉ์ผ๋ก ์ฝ๋ ๊ธธ์ด ๋จ์ถ
-Null ์์ ์ฑ -> ? ์ฐ์ฐ์๋ก NPE(NullPointExeption)๋ฐฉ์ง
-๋๋ค & ํ์ฅ ํจ์ -> ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ง์
-๋ฐ์ดํฐ ํด๋์ค -> toString(), equals(), hashcode() ์๋ ์์ฑ
-์ฝ๋ฃจํด ์ง์ -> ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๊ฐํธ
์๋ฐ์ ์ฅ์
-์ฑ์ํ ์ํ๊ณ
-์์ ์ฑ
-๋ฐํ์ ์ฑ๋ฅ -> ์ผ๋ถ ๊ฒฝ์ฐ์์๋ ๋ ๋น ๋ฅผ ์ ์์
์ ๋ฆฌํ์๋ฉด ์ ํ๋ก์ ํธ๋ผ๋ฉด ์ฝํ๋ฆฐ ์ถ์ฒ, ๋ ๊ฑฐ์ ์ ์ง๋ณด์๋ผ๋ฉด ์๋ฐ ์ ์ง!!
Java์์ Kotlin์ผ๋ก ๋ณํํ๋ ๊ฒ์ ์ถฉ๋ถํ ๊ฐ๋ฅํ๋ฉฐ ์ธํ ๋ฆฌ์ ์ด์ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ์๋ ์ปจ๋ฒํ ์์ ์ด ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฌ๋ ์๋ ๋ณํ์ด ํญ์ ์๋ฒฝํ์ง ์๊ธฐ ๋๋ฌธ์, ๋ณํ ํ ์๋์ผ๋ก ์์ ํด์ผ ํ ๋ถ๋ถ์ด ๋ฐ์ํ ์ ์๋ค. ๋ณํ ์์๋ ์ฝํ๋ฆฐ์ null-safety ๊ฐ๋ ์ ๊ณ ๋ คํด์ผ ํ๋ฉฐ, ์๋ฐ์์ ์ฌ์ฉํ๋ Getter์ Setter๋ ์ฝํ๋ฆฐ์ ํ๋กํผํฐ๋ก ์์ฐ์ค๋ฝ๊ฒ ๋ณํ๋ ์ ์๋ค. ๋ํ ์๋ฐ์ ๋๋ค ๋ฐ ๊ณ ์ฐจ ํจ์๊ฐ ์ฝํ๋ฆฐ์์ ์ด๋ป๊ฒ ๋ณํ๋๋์ง ํ์ธํด์ผํ๋ฉฐ, Checked Exception์ด ์ฝํ๋ฆฐ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋์ง ์๋ ์ ๋ ์ ์ํด์ผ ํ๋ค. ๋ง์ง๋ง์ผ๋ก ์๋ฐ์ ์ปฌ๋ ์ ๊ณผ ์ฝํ๋ฆฐ์ ์ปฌ๋ ์ ์ด ๋ค๋ฅด๊ฒ ๋์ํ ์ ์์ผ๋ฏ๋ก ์ปฌ๋ ์ ๋ณํ์๋ ์ ๊ฒฝ ์จ์ผ ํ๋ค.
๋ฐ๋๋ก ์ฝํ๋ฆฐ์์ ์๋ฐ๋ก ๋ณํํ๋ ๊ฒ๋ ๊ฐ๋ฅํ์ง๋ง ์๋ ๋ณํ ์ง์์ด ๋ถ์กฑํ์ฌ ์๋ฐ ์ฝ๋๋ก ๋ณํํ ๋๋ ์๋ ์์ ์ด ๋ ๋ง์ด ํ์ํ๋ค. ํนํ ์ฝํ๋ฆฐ์ ํ์ฅ ํจ์๋ ์๋ฐ์์ ์ ์ ๋ฉ์๋๋ก ๋ณํํด์ผ ํ๊ณ , ๋ฐ์ดํฐ ํด๋์ค๋ ์ผ๋ฐ ํด๋์ค ํํ๋ก ๋ณํํ ํ ํด์ฌ์ฝ๋, ํฌ์คํธ๋ง, ์ดํ์ฆ๋ฅผ ์ง์ ๊ตฌํํด์ผํ๋ค. ๋ํ ์ฝํ๋ฆฐ์ ์ฝ๋ฃจํด ๊ธฐ๋ฅ์ ์๋ฐ์์ ์ง์ ์ ์ผ๋ก ์ง์๋์ง ์์ผ๋ฏ๋ก ์ค๋ ๋ ๊ธฐ๋ฐ ์ฝ๋๋ก ๋ณ๊ฒฝํด์ผํ๋ฉฐ, ์ฝํ๋ฆฐ์ด ์ ๊ณตํ๋ ๋-์ธ์ดํํธ๋ฅผ ์๋ฐ์์๋ ์ด๋ ธํ ์ด์ ๋๋, ์ด๋ ธํ ์ด์ ๋์์ด๋ธ ์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ค. ๋ง์ง๋ง์ผ๋ก ์ฝํ๋ฆฐ์ ํจ์ํ ์คํ์ผ ์ฝ๋๋ฅผ ์๋ฐ์ ๋๋ค ํํ์์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์์๋ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค. ๋ณํ ํ ์๋ ๋ฐ๋์ ๋น๋ ๋ฐ ํ ์คํธ๋ฅผ ์งํํ์ฌ ์์์น ๋ชปํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํ๋ค.
์๋ฐ์์ ์ฝํ๋ฆฐ์ผ๋ก ๋ณํํ๋ ๊ฒ์ ๊ฐ๋ฅํ๋ฉฐ, ์ธํ ๋ฆฌ์ ์ด์ ์๋ ์ปจ๋ฒํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ฒฝํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ณํ ํ ์๋ ์์ ์ด ํ์ํ ์ ์์ต๋๋ค. ๋ณํ ์ ์ฝํ๋ฆฐ์ ๋์ธ์ดํํฐ, ํ๋กํผํฐ ๋ณํ, ์๋ฐ์ ๋๋ค์ ๊ณ ์ฐจ ํจ์ ๋ณํ์ ํ์ธํด์ผํฉ๋๋ค. ๋ํ ์ฝํ๋ฆฐ์ ์ฒดํฌ ์ต์ ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์์ผ๋ฉฐ, ์๋ฐ์ ์ปฌ๋ ์ ๊ณผ ๋์ ์ฐจ์ด๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋ฐ๋๋ก ์ฝํ๋ฆฐ์์ ์๋ฐ๋ก ๋ณํํ ๋๋ ์๋ ๋ณํ์ด ๋ถ์กฑํ์ฌ ์๋ ์์ ์ด ๋ ๋ง์ด ํ์ํฉ๋๋ค. ํนํ ์ฝํ๋ฆฐ์ ํ์ฅ ํจ์๋ ์๋ฐ์ ์ ์ ๋ฉ์๋๋ก ๋ณํํ๊ณ , ๋ฐ์ดํฐ ํด๋์ค๋ ํด์ฌ์ฝ๋, ํฌ์คํธ๋ง, ์ดํ์ฆ๋ฅผ ์๋์ผ๋ก ๊ตฌํํด์ผ ํฉ๋๋ค. ์ฝํ๋ฆฐ์ ์ฝ๋ฃจํด์ ์๋ฐ์์ ์ค๋ ๋ ์ฝ๋๋ก ๋ณ๊ฒฝํด์ผ ํ๋ฉฐ, ์ฝํ๋ฆฐ์ ๋ ์ธ์ดํํฐ๋ ์๋ฐ์์ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ํจ์ํ ์คํ์ผ ์ฝ๋๋ฅผ ์๋ฐ์ ๋๋ค ํํ์์ผ๋ก ๋ณํํ ๋๋ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ๋ณํ ํ์๋ ๋ฐ๋์ ๋น๋์ ํ ์คํธ๋ฅผ ํตํด ์ค๋ฅ๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค.
- ์๋ฐ์์ ์ฝํ๋ฆฐ์ผ๋ก ๋ณํํ๋ ๊ฒ์ ์ถฉ๋ถํ ๊ฐ๋ฅํฉ๋๋ค. ์ธํ ๋ฆฌ์ ์ด์ ์๋ฐ์์ ์ฝํ๋ฆฐ์ผ๋ก ์๋ ์ปจ๋ฒํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ณํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ฒฝํ์ง๋ ์๊ธฐ ๋๋ฌธ์ ๋ณํ ํ ์๋์ผ๋ก ์์ ์ด ์ด๋์ ๋ ํ์ํฉ๋๋ค. ๋ณํ ์ ์ฝํ๋ฆฐ์ ๋์ธ์ดํํฐ, ํ๋กํผํฐ ๋ณํ, ์๋ฐ์ ๋๋ค์ ๊ณ ์ฐจ ํจ์ ๋ณํ์ ํ์ธํด์ผํ๊ณ ๋ํ ์ฝํ๋ฆฐ์ ์ฒดํฌ ์ ์ ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์์ผ๋ฉฐ, ์๋ฐ์ ์ปฌ๋ ์ ๊ณผ ๋์ ์ฐจ์ด๋ ๊ณ ๋ คํด์ผํฉ๋๋ค. ๋ณํ ํ์๋ ๋ฐ๋์ ๋น๋์ ํ ์คํธ๋ฅผ ํตํด ์ค๋ฅ๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค.
์ค์ ์ ๊ฐ์ํ์ ๊ฐ๋ฐ ์๋์ ์๋ค. ๋ ๊ฑฐ์ ์คํ๋ง์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ธ๋ฐํ๊ฒ ์ค์ ํ ์ ์์ง๋ง ๋ง์ ์ค์ ๊ณผ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค. ์คํ๋ง๋ถํธ๋ ์คํ๋ง ํ๋ ์์ํฌ์ ์ค์ ์ ์๋ํํ๊ณ , ๊ฐ๋ฐ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๊ณ , ์ค์ ์ ์๋ํํ์ฌ ๋น ๋ฅด๊ฒ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค. ์ค์ ์ด ์๋ํ๋์ด ์๊ณ , ๊ธฐ๋ณธ์ ์ธ ํ๊ฒฝ์ด ๋ฏธ๋ฆฌ ์ค๋น๋์ด ์์ด์ ์ฝ๋ ์์ฑ์ ์ง์ค ํ ์ ์์ต๋๋ค.
์คํ๋ง์ ์์กด์ฑ ์ฃผ์ ์ ๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ์ง์ ์์ฑํ๊ฑฐ๋ ๊ด๋ฆฌํ์ง ์๊ณ ์คํ๋ง ํ๋ ์ ์ํฌ๊ฐ ๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ์๋์ผ๋ก ์ฃผ์ ํด ์ฃผ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ ๋๋ค. ๊ฐ๋จํ ๋งํด, ๊ฐ์ฒด๊ฐ ํ์ํ ๋ค๋ฅธ ๊ฐ์ฒด(์์กด์ฑ)๋ฅผ ์ง์ง ์์ฑํ๋ ๋์ ์ธ๋ถ์์ ์ ๊ณต๋ฐ๋ ๋ฐฉ์์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์ฌ์ฉ ์ด์ :
1.์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ ํฅ์ : ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถฐ, ์ฝ๋ ๋ณ๊ฒฝ์ด๋ ํ์ฅ์ด ์ฉ์ดํด์ง๋๋ค.
2.ํ ์คํธ ์ฉ์ด์ฑ: ์์กด์ฑ์ ์ฝ๊ฒ ๋์ฒดํ ์ ์์ด ๋จ์ ํ ์คํธ ์์ฑ์ด ํธ๋ฆฌํฉ๋๋ค.
3.๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ ํฅ์
์คํ๋ง์ ์์กด์ฑ ์ฃผ์ ์ ๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ์ง์ ์์ฑํ๊ฑฐ๋ ๊ด๋ฆฌํ์ง ์๊ณ , ์ธ๋ถ์์ ์ ๊ณต๋ฐ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ๋ ๊ธฐ์ ์ ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถฐ ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ , ํ ์คํธ๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ฉฐ, ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
AOP๋ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ถ๊ฐ์ ์ธ ๊ด์ฌ์ฌ(์: ๋ก๊น , ํธ๋์ญ์ ๊ด๋ฆฌ, ๋ณด์ ๋ฑ)๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๊ธฐ๋ฒ์ ๋๋ค. ์คํ๋ง์์ AOP๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๊ฐ๋ก์ง์ ๋ณ๋์ ๋ชจ๋๋ก ์ ์ํ๊ณ , ํน์ ์ง์ ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ ํต์ฌ ๋ก์ง๊ณผ ๋ถ๊ฐ ๋ก์ง์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์ฝ๋์ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์์ต๋๋ค.
AOP๋ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ถ๊ฐ์ ์ธ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๊ธฐ๋ฒ์ ๋๋ค. ์คํ๋ง์์ AOP๋ฅผ ํ์ฉํ๋ฉด ๋ฉ์๋ ์คํ ์๊ฐ์ ๋ก๊น ํ๋ ๋ถ๊ฐ ๋ก์ง์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ถ๋ฆฌํ์ฌ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค. ๋ถ๊ฐ ๋ก์ง์ ์ ์ํ๋ ํด๋์ค์ @Aspect ์ด์ ํธ ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํ๊ณ ์คํ์ ํ์ ์์ ๊ณผ ์ ์ฉ ๋์ ๋ฉ์๋๋ฅผ ์ค์ ํ๋ฉด ๋ฉ์๋์ ์คํ ์๊ฐ์ผ ์ธก์ ํ๊ณ ๋ก๊ทธ์ ๊ธฐ๋กํ ์ ์์ต๋๋ค. ์ด๋ ํต์ฌ ๋ก์ง์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ถ๊ฐ ๋ก์ง์ ์ถ๊ฐํ๋ AOP ๊ตฌํ์ ๋ฐฉ๋ฒ์ ๋๋ค.
JPA : ORM ๊ธฐ์ ์ ํ์ค ์ธํฐํ์ด์ค -> ORM์ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋งคํํด์ฃผ๋ ๊ธฐ์ , JPA๋ ์ด๋ฅผ ํ์คํ ํ๊ฒ
JPA๋ ์๋ฐ์์ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ API
ํ์ด๋ฒ๋ค์ดํธ๋ JPA ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ตฌํ์ฒด์ด๋ค.
JPA๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ท์ ํ๋ ํ์ค ์ธํฐํ์ด์ค์ด๊ณ Hibernate๋ JPA๋ฅผ ๊ตฌํํ์ฌ ์ค์ ๋์์ ์ํํ๋ ๊ตฌํ์ฒด์ด๋ค. ์คํ๋ง๋ถํธ๋ JPA๋ฅผ ์ง์ํ๋ฉด์๋ ๊ธฐ๋ณธ์ ์ผ๋ก hibernate๋ฅผ JPA ๊ตฌํ์ฒด๋ก ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์คํ๋ JPA ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์๋ Hibernate์ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค.
JPA๋ ์๋ฐ์์ ๊ฐ์ฒด๋ฅผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋งคํํ๊ธฐ ์ํ ORM ํ์ค ์ธํฐํ์ด์ค๋ก ๊ฐ์ฒด์ ํ ์ด๋ธ๊ฐ์ ์ํธ์์ฉ์ ์ ์ํ๋ API์ ๋๋ค. ํ์ด๋ฒ๋ค์ดํธ๋ JPA์ ๊ตฌํ์ฒด๋ก JPA์ ๊ท์น์ ์ค์ ๋ก ์คํํ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ ์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
ํธ๋์ญ์ ๋ ์ด๋ ธํ ์ด์ ์ ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ค์ ์ผ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๊ฑฐ๋ ์คํจํ์ ๋ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ ์ํฉ๋๋ค. ์ฃผ์ ์ญํ ๋ก๋
์์ธ๊ฐ ๋ฐ์ํ๋ฉด ํธ๋์ญ์ ์์ ์ ์ทจ์ํ๊ณ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ์๋ ๋กค๋ฐฑ์ด ์๊ณ
์์ ์ด ์ ์์ ์ผ๋ก ์๋ฃ๋๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ ์๋์ผ๋ก ์ปค๋ฐํ๋ ์๋ ์ปค๋ฐ๊ณผ
ํธ๋์ญ์ ์ ์๋์ผ๋ก ๊ด๋ฆฌํ์ง ์์๋ ๋๋ฏ๋ก ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋ ์ฝ๋ ๊ฐ์ํ ๊ฐ ์๋ค
ํธ๋์ญ์ ๋์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ฝ๊ฒ ๋ณด์ฅํ ์ ์์ต๋๋ค.
์คํ๋ง ์ํ๋ฆฌํฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ฆ๊ณผ ๊ถํ ๋ถ์ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ๋ ฅํ ๋ณด์ ํ๋ ์์ํฌ์ ๋๋ค. ์ด๋ ๋ก๊ทธ์ธ, ์ฌ์ฉ์ ์ธ์ฆ, ๊ถํ ๊ฒ์ฌ, ๋ฐ์ดํฐ ๋ณดํธ๋ฑ ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋์์ค๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋ง ์ํ๋ฆฌํฐ๋ ์์ฒญ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ๊ธฐ ์ ์ ์ฌ์ฉ์ ์ ์์ ํ์ธํ๊ณ , ์ฌ์ฉ์๊ฐ ํด๋น ๋ฆฌ์์ค์ ์ ๊ทผํ ๊ถํ์ด ์๋์ง ๊ฒ์ฌํฉ๋๋ค. ๋ํ, ์ํธํ, CSRF๋ณดํธ ์ธ์ ๊ด๋ฆฌ์ ๊ฐ์ ๋ค์ํ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ํ๊ฒ ๋ณดํธํ ์ ์์ต๋๋ค.
์คํ๋ง ๋ถํธ์ ์๋ ์ค์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์๊ฐ ๋ณ๋๋ก ์ค์ ํ์ง ์์๋, ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ํ Bean๊ณผ ์ค์ ์ ์คํ๋ง ๋ถํธ๊ฐ ์๋์ผ๋ก ๊ตฌ์ฑํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฅผ ํตํด ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น ๋ฅด๊ณ ๊ฐํธํ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค. ํ์ฉ๋ฐฉ๋ฒ์
1.์คํ๋ง ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ธํ ์ด์ ์ ํฌํจ๋ ์ด๋ค์ด๋ธ์คํ ์ปจํผ๊ทธ๋ ์ด์ ์ด๋ ธํ ์ด์ ์ ํตํด ์๋ ์ค์ ์ด ํ์ฑํ๋ฉ๋๋ค.
2.ํ์ ์ ์ดํ๋ฆฌ์ผ์ด์ ์์ด๋ ํ๋กํผํฐ์ค ํ์ผ์์ ๊ธฐ๋ณธ ์ค์ ์ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ ๋๋ถ์ ๊ฐ๋ฐ์๋ ์ต์ํ์ ์ค์ ๋ง์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ํ๊ณ ํ์ํ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
์คํ๋ง์์ ๋น์ ๋ผ์ดํ์ฌ์ดํด(๋น ์๋ช ์ฃผ๊ธฐ)์ ์์ฑ,์ด๊ธฐํ,์ฌ์ฉ,์๋ฉธ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์นฉ๋๋ค. ์ด ๊ณผ์ ์ ์คํ๋ง ์ปจํ ์ด๋์ ์ํด ๊ด๋ฆฌ๋๋ฉฐ, ๊ฐ๋ฐ์๋ ํ์์ ๋ฐ๋ผ ํน์ ๋จ๊ณ์์ ๋ก์ง์ ์ถ๊ฐํ๊ฑฐ๋ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค. ๊ด๋ฆฌ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ๋ฐ์๋ XML/Java ์ค์ ํ์ผ์ ํตํด ์ด๊ธฐํ ๋ฐ ์ข ๋ฃ ๊ณผ์ ์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด Bean์ ์ด๊ธฐํ/์ ๋ฆฌ ์์ ์ ์ํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ค์ ์ด๋ ๋ฆฌ์์ค ์ ๋ฆฌ๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋น์ ๋ผ์ดํ ์ฌ์ดํด์ ์คํ๋ง ์ปจํ ์ด๋์ ์ํด ๊ด๋ฆฌ๋๋ ๋น์ด ์์ฑ๋๊ณ ์๋ฉธ๋๊น์ง์ ์ผ๋ จ์ ๊ณผ์ ์ ๋งํ๋๋ฐ ์์ฑ, ์์กด์ฑ ์ฃผ์ , ์ด๊ธฐํ,์ฌ์ฉ,์๋ฉธ๋ก ์งํ๋๋ค. ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ์ด๊ธฐํ ์์ ์ด๋ ๋ฆฌ์์ค ์ ๋ฆฌ๋ฅผ ์ง์ ์ ์ํ๋ ค๋ฉด @PostConstruct(ํฌ์คํธ์ปจ์คํธ๋ญํธ), @PreDestroy(ํ๋ฆฌ๋ฐ์คํธ๋ก์ด) ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉฐ InitializingBean(์ด๋์ ๋ผ์ด์ง๋น)๊ณผ DisposableBean(๋์คํฌ์ ๋ธ ๋น) ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด ์ด๊ธฐํ์ ์๋ฉธ ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ค. ์ด ๋ผ์ดํ ์ฌ์ดํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด๋ ํ์ผ ๋ฆฌ์์ค ์์ ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๋๋ก ๋์์ค๋๋ค.
์ฃผ์ ์ฐจ์ด์ ์ ์๋ต ์ฒ๋ฆฌ ๋ฐฉ์์ ์์ต๋๋ค. REST ์ปจํธ๋กค๋ฌ๋ API ๋ฐ์ดํฐ ์๋ต์, ์ผ๋ฐ ์ปจํธ๋กค๋ฌ๋ ์น ๋ทฐ ๋ ๋๋ง์ ์ ํฉํฉ๋๋ค.
REST ์ปจํธ๋กค๋ฌ๋ ๋ฉ์๋์์ ๋ฐํ๋ ๋ฐ์ดํฐ๊ฐ JSON ๋๋ XML ํ์์ผ๋ก ๋ณํ๋์ด HTTP ์๋ต ๋ณธ๋ฌธ์ ์ง์ ์์ฑ๋ฉ๋๋ค. ์ฃผ๋ก RESTful API๋ฅผ ๊ตฌํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
์ผ๋ฐ ์ปจํธ๋กค๋ฌ๋ ๋ฉ์๋์์ ๋ฐํ๋ ๊ฐ์ ๋ทฐ ์ด๋ฆ์ผ๋ก ๊ฐ์ฃผ๋๋ฉฐ, ํด๋น ๋ทฐ๋ฅผ ๋ ๋๋งํ์ฌ HTML๊ณผ ๊ฐ์ ๋ด์ฉ์ ๋ฐํํฉ๋๋ค. ์ฃผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.