๐ฎ ์ค๋ธ์ ํธ์ ์์กด๊ด๊ณ ๐ฎ ์ค๋ธ์ ํธ์ ์์กด๊ด๊ณ ๐๋๊ฐํ DAO ๐ JDBC ๐ DAO์ ๋ถ๋ฆฌ ๊ณตํต๊ธฐ๋ฅ์ ๋
๋ฆฝ์ํค๊ธฐ ์์์ ํตํ ํ์ฅ DAO์ ํ์ฅ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ ๊ด๊ณ์ค์ ์ฑ
์์ ๋ถ๋ฆฌ < ์ดํด ์ ์๋์ ๋ค์๋ด์ผ.. > ๐ ์์น๊ณผ ํจํด โญ SOLID SRP (Single Responsibility Principle) ๋จ์ผ ์ฑ
์ ์์น OCP (Open Closed Principle) ๊ฐ๋ฐฉ ํ์ ์์น LSP (Liskov Substitution Principle) ๋ฆฌ์ค์ฝํ ์นํ ์์น ISP (Interface Segregation Principle) ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น DIP (Dependency Inversion Principle) ์์กด ์ญ์ ์์น ๐ก ์ ๋ต ํจํด ๐ฏ ์ ์ด์ ์ญ์ (IoC) ์คํ๋ง์ ์ค๋ธ์ ํธ์ ๊ดํ ์ค๊ณ์ ๋์ ๊ฒ์ฆ, ๊ตฌ์กฐ๋ฅผ ์ง์์ ์ผ๋ก ๊ฐ์ ํ๋ ํ
์คํธ๋ฑ์ ์ฌ๋ฌ๊ฐ์ง ์ง์์ด ์๊ตฌ๋๋ ํ๋ ์์ํฌ๋ก์จ ์ค๋ธ์ ํธ์ ๋ํ ๊ด์ฌ๊ณผ ๊ฐ์ฒด์งํฅ ๊ธฐ์ ์ด ์ ๊ณตํ๋ ํํ๊ณผ ๋ชฉ์ ์ฑ์ ๊ฐ์กฐํ๋ค.
AOP (๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) AOP (๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) AOP์ ๊ตฌ์ฑ์์ *Target *Aspect *Advice - Interceptor (What?) *Join Point - When? *Point Cut - Where? *Proxy *Weaving โ๏ธ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒด์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ ์ฌ์ฌ์ฉ โ๏ธ ํก๋จ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ (Seperation of Concern)
๊ธฐ์กด์ OOP์๋ ๋ค๋ฅธ ๊ด์ ์ผ๋ก ๋ถ๊ฐ๊ธฐ๋ฅ์ ์ธ ์ธก๋ฉด์์์ ๊ณตํต๋ ์์๋ฅผ ๊ฐ์กฐํ๋ ๊ฒ์ด๋ค.
OOP AOP ๋น์ฆ๋์ค ๋ก์ง ๊ฐ๊ฐ์ ๋ชจ๋์ ํ์ํ ๋ถ๊ฐ๊ธฐ๋ฅ ํต์ฌ๊ด๋ฆฌ ๋ชจ๋(class or service)๋ง๋ค ํ์ํ ๋ชจ๋(code)์ ์ง์ ํธ์ถํ์ง์๊ณ Weavingํ์ฌ ํก๋จ๊ด์ฌ ์ฝ๋๊ฐ ์ฝ์
์ฌ์ฌ์ฉ ๋๋๋ก ํ๋ ๋ฐฉ๋ฒ.
Interceptor & Annotation โ๏ธ HTTP Request / Response์ Controller ์๋ค์ ์์ฒญ/์๋ต์ ๊ฐ๋ก์ฑ ์์
์ ์ํํ๋ ์ญํ
โ๏ธ HandlerInterceptor ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด ๊ตฌํํ๋ค.
implements : preHandle() postHandle() afterCompletion() โ๏ธ ์์ ์์๋ ์ธ์
์ฒ๋ฆฌ์ ๊ด๋ จ๋ @Auth ๋ฅผ ๊ตฌํ ํด๋ดค๋ค.
ํํฐ๋ ๊ทธ๋ฆผ์์ ๋ณด์ด๋ฏ Servlet์ ์์์ ๊ด์ฌํ๋ฉฐ Interceptor๋ Controller์ ์๋ค์์ ์ด๋ฃจ์ด์ง๋ค
HandlerInterceptorAdapter Interceptor์ ๊ตฌํ์ ์์๋ฐ์ ์ด์ฉํ ์ ์๋ ์ถ์ ํด๋์ค์ด๋ค. Interceptor ๊ตฌํ์ ํ์ํ HandlerInterceptor ์ธํฐํ์ด์ค๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๊ตฌํํ ํด๋์ค ์ด๊ธฐ ๋๋ฌธ์ Method๋ง Overrideํ์ฌ ๊ตฌํ ํ ์ ์๋ค.
Message Converter & Log Message Converter XML์ด๋ JSON์ ์ด์ฉํ Ajax์ฒ๋ฆฌ์ Client - Server ์ฌ์ด์ ๋ฉ์ธ์ง ์ ์ก์ ์ด์ฉ๋จ
Request Body / Response Body ๊ตฌ์กฐ
๋ฉ์๋ ํ๋ผ๋ฏธํฐ์ @RequestBody, ๋ฉ์๋ ๋ฐํํ์
์ผ๋ก @ResponseBody ํน์ ๋ฉ์๋ ์ด๋
ธํ
์ด์
์ผ๋ก ์ด์ฉ
Message Converter๋ AnnotationMethodHandlerAdpater ์ธํฐํ์ด์ค๋ฅผ ํตํด ํ๋์ด์์ ์ปจ๋ฒํฐ๊ฐ ๋ฑ๋ก, ์ ํ ๋์ํ๊ฒ ๋๋ค.
<mvc:annotation-driven/>์์ ์๋์ผ๋ก ๋ฑ๋ก๋๋ค.
<mvc:annotation-driven/> ๋ํดํธ bean๊ณผ ํจ๊ป Jackson๊ณผ JAXB๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ฑ๋ก ๋์ด์์ ๊ฒฝ์ฐ ๊ฐ์ด ๋ฑ๋ก๋๋ค. โ๏ธ ์ฃผ๋ก Ajax์ฒ๋ฆฌ์ ์ํ ๋ฉ์ธ์ง ์ ์ก์ ์ฃผ๊ณ ๋ฐ์๋ ์ด์ฉ๋๋ค.