๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (135) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ์คํ๋ง ์ปจํ ์ด๋์ ๊ด๊ณ Spring Quick Start(์ฑ )์ Day4 class03 ์ ๊ณต๋ถํ ๋ด์ฉ์ ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ์์ฃผ ์ค์ํ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค! characterEncoding org.springframework.web.filter.CharacterEncodingFilter encoding EUC-KR characterEncoding *.do contextConfigLocation classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:dispatche.. intelliJ ํฐ์บฃ ์๋ฒ๋ก ์คํํ๊ธฐ 1. add Configuration Template์์ Tomcat Server > Local Warning์ด ๋จ๋๋ฐ ์์ ๋นจ๊ฐ ์ ๊ตฌ๋ก Fix ๋ถ๋ถ์ ๋๋ฅด๋ฉด war์ war:exploded๊ฐ ๋ฌ๋ค. ๋ฐ์ ๊ฒ์ ํด๋ฆญํ๋ค. Application context์ "/๋ธ๋ผ์ฐ์ ์์ํธ์ถ๋๊ธธ์ํ๋ํ๋ก์ ํธ์ด๋ฆ" ์ ์ง์ ํ ์ ์๋ค. 2. ์ด๋ ๊ฒ ์ค์ ์ ๋ค ํ๊ณ ์ ์ฉํ๋ฉด Run button(์ด๋ก์ ์ธ๋ชจ ๋ฒํผ)์ด ํ์ฑํ๋๋ค. ๋๋ฌ๋ณด์! IntelliJ๋ก, Spring ํ๋ก์ ํธ(maven) ์์ฑํ๊ธฐ ๐ํ๋ก์ ํธ ์์ฑํ๊ธฐ 1. maven์ webapp์ผ๋ก ํ๋ก์ ํธ ์์ฑํ๋ค. maven์ ์ด์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ pom.xml ํ์ผ๊ณผ webapp ๋๋ ํ ๋ฆฌ ๋ฐ์ webapplication ์ค์ ์ ์ํ web.xml ํ์ผ์ด ์์ฑ๋๋ค. 2. pom.xml์ ์ ์ถ๊ฐํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ค. ์คํ๋ง 5.3.2๋ก ์์ฑํ๋ pom.xml์ ์ฌ๊ธฐ์ ํ์ธํ ์ ์๋ค. 16๋ฒ์งธ ์ค ์ดํ (properties)๋ก ๋ณต๋ถํด์ค๋ค. ๋ฐ์ ๋ฒํผ ํด๋ฆญํ๋ฉด reload ๋๋ค. 3. Spring MVC ํ๋ ์์ํฌ๋ฅผ ์ถ๊ฐํ๋ค. ๋ฃจํธํด๋ ์ฐํด๋ฆญ ํ > Add Frameworks Support > Spring MVC ํ๋ฉด webapp directory์ applicationContext.xml์ dispatcher-servlet... IntelliJ Add Framework Support์ Spring์ด ๋ณด์ด์ง ์์ ๋ IntelliJ Add Framework Support์ Spring์ด ๋ณด์ด์ง ์์ ๋ ์ฆ, ๋ฐ์ ๋ถ๋ถ์ด ๋ณด์ด์ง ์์ ๋๋ File > Project Structure (ctrl + alt + shift + s) ์ ๋ค์ด๊ฐ์ Facets > Spring ํด๋ฆญ > ์ญ์ ๋ฒํผ ๋๋ฅด๊ธฐ ๋ค์ Add Framework Support์ ๋ค์ด๊ฐ๋ฉด Spring ๊ด๋ จ ๋ฉ๋ด๋ค์ด ์๊ธด ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ด๋ ธํ ์ด์ ์ ์ ์ฉํ Spring MVC ๊ฒ์ํ ๊ฐ๋ฐ Spring Quick Start(์ฑ )์ Day4 class01~02 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. ์ค์ตํ ์ฝ๋์ ๋งํฌ์ ๋๋ค. 1. ์ปจํธ๋กค๋ฌ ๊ฐ์ฒด์ @Controller ๋ฑ๋กํ๊ธฐ @Controller๋ก ๋ฑ๋ก๋ ์ปดํฌ๋ํธ๊ฐ ์ค์บ๋๊ธฐ ์ํด ์คํ๋ง ์ค์ ํ์ผ(webapp/WEB-INF/presentation-layer.xml)์ ์ผ๋ก ํจํค์ง ์์น๋ฅผ ์ง์ ํด ์ฃผ์ด์ผ ํ๋ค. ์ปจํธ๋กค๋ฌ ํด๋์ค์ @Component๋ฅผ ์์ํ @Controller๋ฅผ ๋ฑ๋กํ๋ค. 2. @RequestMapping ์ฌ์ฉํ๋ฉด์ Controller ํตํฉํ๊ธฐ @RequestMapping ์คํ๋ง์์๋ @RequestMapping์ ์ด์ฉํ์ฌ HandlerMapping ์ค์ ์ ๋์ฒดํ๋ค. HandlerMapping ์ ์ด์ ์ ์คํ๋ง ์ค์ ํ์ผ์์ ์ง.. ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด: HttpSession, HttpServletRequest, ModelAndView ์คํ๋ง MVC๋ฅผ ์ ์ฉํ์ฌ Controller๋ฅผ ์์ฑํ๋ ์ค ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํด๋๋ ๊ฐ์ฒด์ ๋ํด์ ์ด์ผ๊ธฐํด๋ณด๋ ค ํ๋ค. import javax.servlet.http.HttpSession; HttpSession๋ ํด๋ผ์ด์ธํธ ๋ธ๋ผ์ฐ์ ํ๋๋น ํ๋์ฉ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋์ด ํด๋ผ์ด์ธํธ์ ์ํ์ ๋ณด๋ฅผ ์ ์งํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์ธ์ ์ ๋ง์ ์ ๋ณด๊ฐ ์ ์ฅ๋๋ฉด ๋ ์๋ก ์๋ฒ์ ๋ถ๋ด์ ์ค ์ ๋ฐ์ ์๋ค. import javax.servlet.http.HttpServletRequest; ๊ทธ๋์ ๊ฒ์ ๊ฒฐ๊ณผ๋ HttpServletRequest์ ์ ์ฅํ๋ ๊ฒ์ด ๋ง๋ค. HttpServletRequest๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ผ๋ก ์์ฑ๋๋ค๊ฐ ์๋ต๋ฉ์ธ์ง๊ฐ ํด๋ผ์ด์ธํธ๋ก ์ ์ก๋๋ฉด ์๋์ผ๋ก ์ญ์ ๋๋ ์ผํ์ฑ ๊ฐ์ฒด์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์๋ฒ์ ๋ถ๋ด์ .. ์คํ๋ง ์ธ์ฝ๋ฉ ์ค์ ์คํ๋ง์์๋ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ๋ฅผ ์ํด CharacterEncodingFilter ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค. web.xml ํ์ผ์ CharacterEncodingFilter๋ฅผ ๋ฑ๋กํ๋ฉด ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํด์ ์ผ๊ด์ ์ผ๋ก ์ธ์ฝ๋ฉ์ ์ฒ๋ฆฌํ ์ ์๋ค. [web.xml ์ค] characterEncoding org.springframework.web.filter.CharacterEncodingFilter encoding EUC-KR characterEncoding *.do ๋ ๊ณผ ๊ฑฐ์ ๋น์ทํ ํํ๋ก ๋ฑ๋กํ๋ค. WEB-INF/action-servlet.xml ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ action org.springframework.web.servlet.DispatcherServlet action *.do web.xml์์ servlet-name์ด action์ด๋ผ์ "WEB-INF/action-servlet.xml"์ด ๊ธฐ๋ณธ์ ์ธ DispatcherServlet ์ค์ ํ์ผ์ด๋ค. DispatcherServlet์ ์ค์ ํ์ผ ์ด๋ฆ์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด action org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/config/presentation-layer.xml action *.do init-param์ผ๋ก contextConfigLocation ์ง์ ํ๊ณ /WEB-INF/config/์ํ๋_ํ์ผ_์ด๋ฆ .. Spring MVC๋ฅผ ์ ์ฉํ ๊ฒ์ํ ๊ฐ๋ฐ Spring Quick Start(์ฑ )์ Day3 class05~07 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. ์ค์ตํ ์ฝ๋์ ๋งํฌ์ ๋๋ค. 1. DispatcherServlet ๋ฑ๋ก WEB-INF/web.xml ํ์ผ์ ์คํ๋ง ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ DispatcherServlet ๋ฑ๋กํ๊ธฐ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ํด๋ผ์ด์ธํธ์ ".do" ์์ฒญ์ด ์์ด์ผ DispatcherServlet ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. [web.xml] action org.springframework.web.servlet.DispatcherServlet action *.do 2. ์คํ๋ง ์ปจํ ์ด๋ ๊ตฌ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ผ๋ก DispatcherServlet ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค. DispatcherServlet์ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ฒ๋ฆฌ์ ํ์ํ HandlerMa.. EL & JSTL ๋? EL: Expression Language JSP 2.0์์ ์๋ก ์ถ๊ฐ๋ ์คํฌ๋ฆฝํธ ์ธ์ด๋ก์, ๊ธฐ์กด์ ํํ์์ ๋์ฒดํ๋ ํํ์ธ์ด์ด๋ค. ์๋ฅผ ๋ค์ด session์ ์ ์ฅ๋์ด ์๋ ์ฌ์ฉ์ ์ด๋ฆ์ JSP ํ๋ฉด์ ์ถ๋ ฅํ ๋, ๊ธฐ์กด์๋ ์๋์ ๊ฐ์ด ํํํ๋ค๋ฉด, EL์ ์ด์ฉํ๋ฉด ์๋์ ๊ฐ์ด ํํํ ์ ์๋ค. ${userName} ์๋์ ์ฝ๋์์ ๊ฐ๊ฐํ ${ } ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ ์ฐ๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค. [ getBoard.jsp ] ๊ธ ์์ธ Log-out ์ ๋ชฉ ์์ฑ์ ${board.writer } ๋ด์ฉ ${board.content } ๋ฑ๋ก์ผ ${board.regDate } ์กฐํ์ ${board.cnt } ๊ธ๋ฑ๋ก ๊ธ์ญ์ ๊ธ๋ชฉ๋ก JSTL: JSP Standard Tag Library JSP ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด .. MVC๋ฅผ ์ง์ ๊ตฌํํ์ฌ ๊ฒ์ํ ๊ฐ๋ฐ Spring Quick Start(์ฑ )์ Day3 class04 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. Spring MVC๋ฅผ ์ ์ฉํ๊ธฐ ์ , ๋์ผํ ๊ตฌ์กฐ๋ก ํ๋ ์์ํฌ๋ฅผ ์ง์ ๊ตฌํํด๋ณด๋ ค๊ณ ํ๋ค. MVC ํ๋ ์์ํฌ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค. ๐ง ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๋์ ๊ณผ์ ๐ง 1. ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ ๋ฒํผ์ ํด๋ฆญํ์ฌ "/login.do" ์์ฒญ์ ์ ์กํ๋ฉด DispatcherServlet์ด ์์ฒญ์ ๋ฐ๋๋ค. 2. DispatcherServlet์ HandlerMapping ๊ฐ์ฒด๋ฅผ ํตํด ๋ก๊ทธ์ธ ์์ฒญ์ ์ฒ๋ฆฌํ LoginController๋ฅผ ๊ฒ์ํ๊ณ , 3. ๊ฒ์๋ LoginController์ handelRequest() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ก๊ทธ์ธ ๋ก์ง์ด ์ฒ๋ฆฌ๋๋ค. 4. ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ํ์ ์ด๋ํ ํ๋ฉด ์ ๋ณด๊ฐ ๋ฆฌํด๋๋ฉด 5. Dispat.. intelliJ์์ servlet ์์ฑํ๊ธฐ ๋ถ๋ช ๋๊ฐ์ ์ฌ๋์ด ์์ ๊ฒ์ด๋ค. Servlet ํ์ผ์ ์์ฑํ๋ ค๊ณ ํ๋๋ฐ ๋์ ์ป๊ณ ์ฐพ์๋ด๋ Servlet ํ์ผ์ด ์๋ค. ๊ฒ์ํด๋ณด๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ Servlet ํ์ผ์ ์ ํํด์ ๋ฐ๋ก ์์ฑํ ์ ์๋๋ฐ ๋ง์ด๋ค. ํด๋์ค๋ก ๋ง๋ค๊ณ ์ง์ ์จ์ผ ํ๋ ๋ง๋งํ ๊ฒ์ด๋ค. Servlet ์ ์์ฑํ๋ ๋ฐฉ๋ฒ 1. ์๋ฐ ํด๋์ค ๋ง๋ ๋ค. 2. ์๋ธ๋ฆฟ์ ํญ์ HttpServlet์ ์์๋ฐ๊ธฐ์ "extends HttpServlet"์ ์ง์ ์จ์ค๋ค. 3. ์ฐํด๋ฆญ > generate(์ํธ+insert) > Override Methods๋ฅผ ๋๋ฌ ์ํ๋ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ๋ฉด ๋๋ค. ์ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๋ค๋ฅธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. new > Servlet ์ค์ ์ด ์์ผ๋ ค๋ฉด ํ๋ก์ ํธ์ Facets์ web์ด ์ถ๊ฐ๋์ด ์์ด์ผ ํ๋ ๊ฒ ๊ฐ๋ค. ์ถ๊ฐ๋ก, .. [์๋ฌ] intelliJ Server ์ฌ์ฉ ์ output์ฐฝ ํ๊ธ ๊นจ์ง ์ค๋ฅ run configuration์ vm options์ -Dfile.encoding=UTF-8 ์๋์ ๊ฐ์ด ํ๊ธ์ด ์ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. forward์ redirect ์ฐจ์ด ํฌ์๋ RequestDispatcher๋ฅผ ์ด์ฉํ์ฌ ์๋ต์ผ๋ก ์ฌ์ฉํ JSPํ๋ฉด์ผ๋ก ๋๊ฒจ์, ํฌ์๋๋ ํ๋ฉด์ด ํด๋ผ์ด์ธํธ์ ์ ์ก๋๋ ๋ฐฉ์์ด๋ค. ํ๋ฐ์ ์์ฒญ๊ณผ ์๋ต์ผ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก ์คํ ์๋๊ฐ ๋น ๋ฅด๋ค. ํด๋ผ์ด์ธํธ ๋ธ๋ผ์ฐ์ ์ URL์ด ๋ฐ๋์ง ์์ ์๋ต์ด ์ด๋์์ ๋ค์ด์๋์ง ํ์ธํ ์ ์๋ค. ๋ฆฌ๋ค์ด๋ ํธ ์์ฒญ๋ JSP์์ ์ผ๋จ ๋ธ๋ผ์ฐ์ ๋ก ์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๋๋ค๊ฐ ๋ค์ ์๋ฒ๋ก ์ฌ์์ฒญํ๋ ๋ฐฉ์์ด๋ค. ํฌ์๋๋ฐฉ์๊ณผ ๋ค๋ฅด๊ฒ ์ผ๋จ ์๋ต์ด ๋ธ๋ผ์ฐ์ ๋ก ๋ค์ด๊ฐ ๋ค์, ์ฌ์์ฒญํ๋ ๋ฐฉ์์ด๋ค. ์๋ต์ด ๋ค์ด์จ ํ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ URL์ด ๋ณ๊ฒฝ๋๋ค. ๋๋ฒ์ ์์ฒญ๊ณผ ์๋ต์ผ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก ์คํ ์๋๋ ํฌ์๋ ๋ฐฉ์๋ณด๋ค ๋๋ฆฌ๋ค. Model 2 ์ํคํ ์ณ๋ก ๊ฒ์ํ ๊ฐ๋ฐ (Controller์ ๋ฑ์ฅ) Spring Quick Start(์ฑ )์ Day3 class03 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. Model 2 ์ํคํ ์ฒ ๊ตฌ์กฐ ํต์ฌ์ Controller์ ๋ฑ์ฅ์ด๋ค. ๊ธฐ์กด Model 1์์๋ JSP๊ฐ Controller์ View ๊ธฐ๋ฅ ๋ชจ๋๋ฅผ ๋ด๋นํ๋๋ฐ Model 2 JSP๋ ๋์์ธ๊ณผ ๊ฐ์ View๋ฅผ ๋ด๋นํ๊ณ , Servlet ํด๋์ค๊ฐ Controller๋ฅผ ๋ด๋นํ๋ค. MVC ์ํคํ ์ณ์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด Controller์ด๋ค. Controller๋ฅผ ์ฑ๋ฅ๊ณผ ์ ์ง๋ณด์์ ํธ์์ฑ์ ๊ณ ๋ คํ์ฌ ์ ๋ง๋๋ ๊ฒ์ด ๋ฌด์๋ณด๋ค ์ค์ํ๋ค. ์ ๋ฆฌํ๋ฉด ์ด๋ ๋ค. ์ธ์ฝ๋ฉ ์์ ์ DispatcherServlet ํด๋์ค์์ ์ผ๊ด ์ฒ๋ฆฌํ๋ฏ๋ก ์ธ์ฝ๋ฉ์ ๋ณ๊ฒฝํ ๋๋ DispatcherServlet ํด๋์ค๋ง ์์ ํ๋ฉด ๋๋ค. ๊ธ ๋ฑ๋ก, ์.. Model 1 ์ํคํ ์ณ๋ก ๊ฒ์ํ ๊ฐ๋ฐ (JSP์ JavaBeans๋ง์ ์ฌ์ฉ) Spring Quick Start(์ฑ )์ Day3 class01~02 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค. ์ค์ต ์ฝ๋๋ ์ฌ๊ธฐ์ ํ์ธํ ์ ์์ต๋๋ค. Model 1 Architecture ๊ตฌ์กฐ 90๋ ๋ ๋ง๋ถํฐ 2000๋ ๋ ์ด๊น์ง ์๋ฐ ๊ธฐ๋ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฌ์ฉ๋์๋ ์ํคํ ์ณ์ด๋ค. JSP์ JavaBeans๋ง ์ฌ์ฉํ ๋ชจ๋ธ์ด๋ค. Model: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ก์ง์ ์ ๊ณตํ๋ฉด์ DB์์ ๊ฒ์ํ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. ์์ ์ค์ต์์ VO(๋๋ DTO)์ DAO ํด๋์ค๊ฐ ๋ฐ๋ก Model ๊ธฐ๋ฅ์ ์๋ฐ ๊ฐ์ฒด์ด๋ค. View: JSP ์ฝ๋ ์ค์์๋ ์ฌ์ฉ์๊ฐ ์ํ๋ ํ๋ฉด์ ์ ๊ณตํ๊ธฐ ์ํด HTML์ CSS๋ฅผ ์ฌ์ฉํ ๋ถ๋ถ์ด view ๊ธฐ๋ฅ์ ๋ด๋นํ๋ค. Controller: JSP ํ์ผ์ ์์ฑ๋ ์๋ฐ ์ฝ.. ํธ๋์ญ์ (Transaction) ์ ์ฉ 1. ํธ๋์ญ์ ๋ค์์คํ์ด์ค ๋ฑ๋ก ํธ๋์ญ์ ์ ์ํด xmlns:tx๋ฅผ ์ถ๊ฐํ๋ค. [ applicationContext.xml ] 2. ํธ๋์ญ์ ๊ด๋ฆฌ์ ๋ฑ๋ก ๋ชจ๋ Transaction ๊ด๋ฆฌ์๋ PlatformTransactionManager interface๋ฅผ ๊ตฌํํ ํด๋์ค์ด๋ค. ๋ชจ๋ Transaction ๊ด๋ฆฌ์๋ Transaction ๊ด๋ฆฌ์ ํ์ํ commit(), rollback() ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค. public interface PlatformTransactionManager{ TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException; void commit(TransactionStatus.. ํ๋กํผํฐ ํ์ผ์ ์ด์ฉํ Spring JDBC JDBC๋? JDBC๋ ์๋ฐ ๊ฐ๋ฐ์๋ค์ด ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉํ DB ์ฐ๋ ๊ธฐ์ ์ด๋ค. JDBC ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐ์๊ฐ ์์ฑํด์ผ ํ ์ฝ๋๊ฐ ๊ต์ฅํ ๋ง๋ค. ์คํ๋ง์ JDBC ๊ธฐ๋ฐ์ DB ์ฐ๋ ํ๋ก๊ทธ๋จ์ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก JDBCTemplate ํด๋์ค๋ฅผ ์ง์ํ๋ค. ๋ฐ๋ณต๋๋ DB ์ฐ๋ ๋ก์ง์ JDBCTemplate ํด๋์ค์ ํ ํ๋ฆฟ ๋ฉ์๋๊ฐ ์ ๊ณตํ๊ณ , ๊ฐ๋ฐ์๋ ๋ฌ๋ผ์ง๋ SQL ๊ตฌ๋ฌธ๊ณผ ์ค์ ๊ฐ๋ง ์ ๊ฒฝ์ฐ๋ฉด ๋๋ค. ์คํ๋ง JDBC ์ค์ ํ๋ ๋ฐฉ๋ฒ 1. pom.xml์์ JDBC์ DBCP ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ค. org.springframework spring-jdbc ${org.springframework-version} commons-dbcp commons-dbcp 1.4 โ 2. ํ๋กํผํฐ ํ์ผ์ ์ด์ฉํ์ฌ DataSour.. Annotation ๊ธฐ๋ฐ AOP ์ ์ฉ AOP๋ฅผ ์ด๋ ธํ ์ด์ ์ผ๋ก ์ค์ ํ๋ ค๋ฉด, ๊ฐ์ฅ ๋จผ์ ์คํ๋ง ์ค์ ํ์ผ์ ์๋ฆฌ๋จผํธ๋ฅผ ์ ์ธํด์ผ ํ๋ค. ์ด๊ฒ๋ง ์ค์ ํ๋ฉด ์คํ๋ง ์ปจํ ์ด๋๋ AOP ๊ด๋ จ ์ด๋ ธํ ์ด์ ๋ค์ ์ธ์ํ๊ณ ์ฉ๋์ ๋ง๊ฒ ์ฒ๋ฆฌํด์ค๋ค. @Pointcut package com.springbook.biz.common; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; @Aspect public class PointcutCommon { @Pointcut("execution(* com.springbook.biz..*Impl.*(..))") public void allPointcut() { } @Pointcut("execution(* com.springb.. JointPoint ๋ฉ์๋ JointPoint ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด JointPoint๋ฅผ ์ด๋๋ฐ์ด์ค ๋ฉ์๋ ๋งค๊ฐ๋ณ์๋ก ์ ์ธ๋ง ํ๋ฉด ๋๋ค. ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก JointPoint ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ฉ์๋ ํธ์ถ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์ ๋ณด๋ฅผ JointPoint ๊ฐ์ฒด์ ์ ์ฅํ์ฌ ์ด๋๋ฐ์ด์ค ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์ธ์๋ก ๋๊ฒจ์ค๋ค. 1. Before ์ด๋๋ฐ์ด์ค ํด๋ผ์ด์ธํธ๊ฐ ๋น์ฆ๋์ค ๋ฉ์๋๋ฅผ ํธ์ถํ ๋, ์ธ์๋ก ๋๊ฒจ์ค ๊ฐ๋ค์ JoinPoint๋ฅผ ์ด์ฉํ์ฌ ์ถ๋ ฅํ๋๋ก ์์ฑํ๋ค. JoinPoint ๊ฐ์ฒด์ getSignature() ๋ฉ์๋๊ฐ ๋ฆฌํดํ๋ Signature ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ฉด, ํธ์ถ๋๋ ๋ฉ์๋์ ๋ํ ๋ค์ํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค. getName(), getLongString() ๋ฑ์ด ์๋ค. getArgs() ๋ฉ์๋๋ฅผ ํตํด์๋ ์ธ์ ๋ชฉ๋ก์ Object .. ์ด์ 1 2 3 4 5 6 7 ๋ค์