Spring Annotation ๊ณผ Service
๐ Spring Basic
๐ Spring Basic
๐ข DispatcherServlet
๋ธ๋ผ์ฐ์ ์์ ๋ณด๋ด๋ ์์ฒญ์ ๊ฐ์ฅ ๋จผ์ ๋ฐ๋ Front Controller๋ก์จ, request๋ฐ์ ์์ฒญ์ HandlerMapping์๊ฒ ์ง์ํ๋ค.
๐จ DispatcherServlet ๋์ ๋ฐฉ์
- HandlerMapping
Map
๊ตฌ์กฐ ์ฒ๋ผ key(url) : value(method name or Parameter)๋ก ๊ตฌ์ฑ๋์ด ์๋ ํํ์ด๋ค.
- DispatcherServlet์ด HandlerMapping์๊ฒ ์ง์ํ ๊ฒฐ๊ณผ ์ฐพ์๋ธ URL์ด
Controller์๊ฒ
์ ๋ฌ๋์ด - ์ ๋ฌ๋ Parameter์ ํด๋นํ๋ ๋ฉ์๋์ ์คํ๊ณผ ํจ๊ป
- Service๊ณ์ธต์ ์ ์๋์ด์๋ ๋น์ฆ๋์ค ๋ก์ง์ด ์คํ๋๋ค.
- ์ดํ ์คํํ ๋ฉ์๋์ ์ปจํธ๋กค๋ฌ์์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฒฐ๊ณผ๋ก ๋ฆฌํด๋
Model
๊ฐ์ฒด์ ๋ทฐ ์ด๋ฆ๊ณผ ํจ๊ป ๋ฐํ๋๊ณ ViewResolver
๊ฐ ์๋ตํ View๋ฅผ ์ฐพ์๋ด- View๊ฐ์ฒด์ ์์ฒญ์ ์ ๋ฌํ๋ฉฐ ์ต์ข ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค.
๐ ์ฃผ์ Annotation
@ResponseBody
Annotation์ด ์์นํ ๋ฉ์๋์ View๋ฅผ ์ถ๋ ฅํ๋๊ฒ์ด ์๋ return๋๋ ์๋ฃํ์ด MessageConverter์ ์ํด ๋ณํ๋์ด HTTP Response Body์ ์ฐ์ฌ์ ธ ์ ์ก๋๋ค.
Controller์์ View๊ฐ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํด์ผ ํ ์ํฉ์์ (Ajax๊ฐ์) ๋ฉ์๋์ ๋ฆฌํด ์๋ฃํ์ ์ง์ ํ ๋ ์ฐ์ธ๋ค.
@RequestMapping
๊ธฐ๋ณธ์ ์ผ๋ก @RequestMapping(value="parameter”, method.RequestMethod.(method_name))์ ํํ๋ฅผ ๋๋ Annotation์ด๋ค. method๋ฅผ ์ง์ ํ ๊ฒฝ์ฐ
value
ํ๋กํผํฐ ํ์์ ํ์์ ์ด๋ค. ๋ณต์์ urlMapping์ ์ํด์๋ value={“parameter1”, “parameter2”}๋ก ๋ํ๋ธ๋ค.
@RequestParam
HttpServleRequest๊ฐ์ฒด์ getParamter()์ ๋น์ทํ ์ญํ ์ ํ๋ค ํน์ @RequestMapping๋ก ์คํ๋ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ ์ ํ์
/url?key=value
์ฒ๋ผ ์ง์ ํ ์ ์๋ ์ญํ ์ ํ๋ค.
@Autowired
web.xml -> <context-param> ->
<context-annotation-config/>
๋ฅผ ํตํด Autowired Annotation์ ์ฌ์ฉํ ํด๋์ค์ ์์กด์ฑ์ ๋ฎ์ถฐ ์ฌ์ฉํ ์ ์๊ฒํ๋ ์ญํ ์ ํ๋ค
@PathVariable
@RequestParam
์ value๊ฐ์ {param}์ผ๋ก ์ค์ ํ์๋์ ๊ฐ์ @PathVariable
๋ก ๋ฐ์ ๋ฉ์๋ ๋งค๊ฐ๋ณ์๋ก ์ ์ธํ๋ค
@ModelAndView
๋ทฐ์์ Controller๋ก์ ๊ฐ์ฒด ์ ๋ฌ์ด ์ด๋ฃจ์ด์ ธ์ผ ํ ๋ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ๋ค.
๐งListener
ContextLoaderListener๋ฅผ ์์๋ฐ์ contextIntialized ํจ์์ ๋ฃจํธ ์ปจํ ์ด๋๋ฅผ web.xml์ ์ ๋ ฅํ ๊ฒฝ๋ก์ ์ค์ ์ ์ด์ฉํด ๋น๋ํ๋๋กํ๋ ์ญํ
(์์ ์์๋ /WEB-INF/applicationContext.xml๋ฅผ ํ ๋๋ก ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ๋น๋ํ๊ณ ๋ชจ๋ ์๋ธ๋ฆฟ์ด ๊ณต์ ํ๋๋ก ํ๋ค.)
๐๏ธ Layered Architecture
๐ Service
์คํ๋ง์์์ ๋น์ฆ๋์ค ์์ญ์ ์ผ๋ฐ์ ์ผ๋ก ์๋น์ค๋ผ๊ณ ํ๋ค. ๋น์ฆ๋์ค ๊ณ์ธต์ ์ปจํธ๋กค๋ฌ์ DAO์ฌ์ด์ ์ค๋ณต์ฝ๋์ ๊ฐ์ฒด์งํฅ์ ๋ชฉ์ ์ ๋ง๋ ์์กด์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ณ์ธต์ด๋ค.
- DAO์ ๋ฉ์๋ ๋จ์๊ฐ ํธ๋์ญ์
๋จ์๊ฐ ๋๋ค.
- DAO์ CRUD๊ธฐ๋ฅ ์ด์ธ์ ํ์ด์ง ๊ตฌํ์ Service๊ณ์ธต์ ์ด์ฉํ๋๊ฒ์ด ๋ํ์ ์ด๋ค.
- applicationContext.xml์์ ํน์ ํจํค์ง๊ฐ @Service๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํ ์ ์๋ค.
- ERD๋ฅผ ์ด์ฉํ ๋ฐฉ์๊ณผ ์ ์ ์คํ ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒ์ผ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์ค๊ณํ๊ณ `Service๊ณ์ธต์` ๊ตฌํํ๋ค.