Dispatcher Servlet ์ด ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ฅผ ํตํด ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ์ ์ผ ์์์ ๋ฐ๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ์ ๋๋ค. ๊ณตํต๋ ์์ ์ ์ฒ๋ฆฌํ ํ์ ์ ์ ํ ์ธ๋ถ ์ปจํธ๋กค๋ฌ๋ก ์์ ์ ์์ํ๊ณ ์ธ๋ถ ์ปจํธ๋กค๋ฌ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ฉด ๋ฐํํ view๋ฅผ ๋ค์ dispatcher servlet์ ๋๊ธฐ๊ฒ ๋ฉ๋๋ค.Handler Mapping ๊ณผ Handler Adapter๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์.
ํธ๋ค๋ฌ ๋งคํ์ ์ฐ์ ์์์ ๋ฐ๋ผ ์์ฒญ url์ ๋ง๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ๋ํ ํธ๋ค๋ฌ ์ด๋ํฐ๋ ํธ๋ค๋ฌ ๋งคํ์ผ๋ก ํตํด ์ฐพ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ง์ ์ ์ผ๋ก ์คํํ๊ธฐ ์ํด ํ์ํฉ๋๋ค. ์ฐจ๋ก๋๋ก ํธ๋ค๋ฌ ์ด๋ํฐ๋ฅผ ๋๋ฉด์ ๋ง๋ ์ด๋ํฐ๋ฅผ ์ฐพ์ผ๋ฉด dispatcher servlet์ด ํด๋น ์ด๋ํฐ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์คํํฉ๋๋ค.(์ handler adapter๊ฐ ํ์ํ๊ฐ)
๋ค์ํ ์ปจํธ๋กค๋ฌ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์๊ตฌ์ฌํญ์ ๋ง์ถ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
์คํ๋ง์ ์ฌ์ฉํ๋๋ฐ์ ์ด์ ์ ์ด๋ค๊ฒ ์๋์?
์คํ๋ง์ ํ๋ ์ด์์ JAR ํ์ผ๋ก ๊ตฌ์ฑ๋ ๋ชจ๋์ด ๋ชจ์ฌ ๊ตฌ์ฑ๋์ด ์์ด์ ๋ช๊ฐ์ JAR ํ์ผ๋ง ์์ผ๋ฉด ๊ฐ๋ฐ๊ณผ ์คํ์ด ๋ชจ๋ ๊ฐ๋ฅํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ ๋ํ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.๋ํ ๊ฐ์ฒด์ ์์กด ๊ด๊ณ๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋ ์ปจํ ์ด๋๊ฐ ์ง์ ์ฒ๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ์์ค์ ์์กด ๊ด๊ณ๊ฐ ๋ช ์๋์ง ์์ ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ์ ์งํด ์ ์ง ๋ณด์๊ฐ ์ฉ์ดํด์ง๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
๊ทธ ์ธ์๋ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ฐ๋ณต๋๋ ๊ณตํต ๋ก์ง์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์์ง๋๋ฅผ ๋์ผ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
์ Spring Framework๋ฅผ ์ฌ์ฉํ๋์ง, ์ฅ์ ์ ๋ํด ๋ง์ํด ์ฃผ์ธ์.
Spring Framework๋ ๋จผ์ POJO ๊ธฐ๋ฐ์ ๊ตฌ์ฑ์ผ๋ก ๊ฐ๋ฐ์๊ฐ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปจํ ์ด๋ ๊ธฐ์ ์ ์ข ์๋์ง ์๊ธฐ ๋๋ฌธ์ ์์ ๋กญ๊ฒ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๋ฅผ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์์กด์ฑ ์ฃผ์ ์ ํตํด ๊ฐ์ฒด ๊ด๊ณ๋ฅผ ์ฐ๊ฒฐํด ์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ๊ณผ ์ ์ง๋ณด์๊ฐ ํธํด์ง๋๋ค. ๋ํ Spring Cloud๋ Spring Batch ๋ฑ ๋ค์ํ ํ๋ก์ ํธ๊ฐ ๊ตฌ์ถ๋์ด ์์ด ํ์ฅ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.์ฆ, ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์ํ ๊ธฐ๋ฐ์ ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ค์ง ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ์๋ง ์ง์คํ ์ ์์ด ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
Spring์ IoC(์ ์ด์ ์ญ์ )์ DI(์์กด์ฑ ์ฃผ์ )์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
IoC(์ ์ด์ ์ญ์ )๋ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ง์ ์์ฑํ์ง ์๊ณ ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์คํ๋ง ์ปจํ ์ด๋์ ์์ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด ์ ์ด์ ์ญ์ ์ ํตํด DI(์์กด์ฑ ์ฃผ์ )๊ฐ ๊ฐ๋ฅํด ์ง๋๋ค.DI(์์กด์ฑ ์ฃผ์ )๋ ๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ์ธ๋ถ์์ ์ฃผ์ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋๋ฌธ์ ์ง์ ์์กดํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์๋ ์์กด์ฑ์ ์ฃผ์ ๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ์ปดํฌ๋ํธ ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถฐ์ ์ ์ง๋ณด์์ฑ์ด ํฅ์๋ฉ๋๋ค.
Spring์ Bean๊ณผ ๊ทธ ์๋ช ์ฃผ๊ธฐ์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
Bean์ด๋ Spring ์ปจํ ์ด๋์ ์ํด ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค. Bean ๊ฐ์ฒด๋ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์์ฑ๋ ํ ์์ฑ๋๋ฉฐ ์ดํ ์คํ๋ง ์ปจํ ์ด๋์ ์ํด ์์กด ๊ด๊ณ๊ฐ ์ค์ ๋ฉ๋๋ค. Bean ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ ์์กด ๊ด๊ณ๊ฐ ์ฃผ์ ๋๋ฉด ์ด๊ธฐํ ์์ ์ด ์ด๋ฃจ์ด์ง๋ฉฐ ์ฌ์ฉ๋ ์ค๋น๊ฐ ์๋ฃ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๋ฉด Bean ๊ฐ์ฒด๋ ์๋ฉธ๋ฉ๋๋ค.์ฐธ๊ณ
- ๋ฉด์ -์ง๋ฌธ-๋ฐฑ์๋,-Spring
- https://ksabs.tistory.com/250
- https://lasbe.tistory.com/108
- Spring FrameWork ํน์ง, ์ฅ๋จ์
- ์ฐ๋ฆฌ๋ ์ ์คํ๋ง์ ์ฌ์ฉํ๋๊ฐ? - Java spring์ ํน์ง
- ์ ์ด์ ์ญ์ (IoC, DI, AOP)
- Spring Framework ์ฃผ์ ํน์ง ์ดํดํ๊ธฐ : DI, IoC, POJO, AOP
- ์คํ๋ง ์ปจํ ์ด๋์ ๋น ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
- ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ (Bean LifeCycle) @PostConstruct / @PreDestroy