์คํ๋ง ๋ถํธ์์ ์๋ธ๋ฆฟ ์ฌ์ฉํ๊ธฐ @ServletComponentScan @WebServlet(name = "helloServlet", urlPatterns = "/hello") protected void service(HttpServletRequest request, HttpServletResponse response) : HTTP ์์ฒญ์ ํตํด ๋งคํ๋ URL์ด ํธ์ถ๋๋ฉด ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ ๋ค์ ๋ฉ์๋๋ฅผ ์คํ HTTP ์์ฒญ ๋ฐ์ดํฐ๋ก ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ 1. GET - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ /url?username=hello&age=20 String username = request.getParameter("username"); //๋จ์ผ ํ๋ผ๋ฏธํฐ ์กฐํ Enumeration parameterN..
๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
๋น ์ค์ฝํ ๋น์ด ์กด์ฌํ ์ ์๋ ๋ฒ์. @Scope("prototype")๋ก ์ง์ ๊ฐ๋ฅ ์ฑ๊ธํค : ๊ธฐ๋ณธ ์ค์ฝํ๋ก ์คํ๋ง ์ปจํ
์ด๋์ ์์๊ณผ ์ข
๋ฃ๊น์ง ์ ์ง ๋จ ํ๋กํ ํ์
: ์คํ๋ง ์ปจํ
์ด๋๋ ํ๋กํ ํ์
๋น์ ์์ฑ๊ณผ ์์กด๊ด๊ณ ์ฃผ์
๊น์ง๋ง ๊ด์ฌํ๊ณ ๋๋ ๊ด๋ฆฌํ์ง ์๋ ๋งค์ฐ ์งง์ ๋ฒ์์ ์ค์ฝํ ํด๋ผ์ด์ธํธ์ ๋น์ ๋ฐํํ๊ณ , ์ดํ ์คํ๋ง ์ปจํ
์ด๋๋ ์์ฑ๋ ํ๋กํ ํ์
๋น์ ๊ด๋ฆฌํ์ง ์๋๋ค. ํ๋กํ ํ์
๋น์ ๊ด๋ฆฌํ ์ฑ
์์ ํ๋กํ ํ์
๋น์ ๋ฐ์ ํด๋ผ์ด์ธํธ์ ์๋ค. ๊ทธ๋์ @PreDestroy ๊ฐ์ ์ข
๋ฃ ๋ฉ์๋๊ฐ ํธ์ถ๋์ง ์๋๋ค. ์น ๊ด๋ จ ์ค์ฝํ request: ์น ์์ฒญ์ด ๋ค์ด์ค๊ณ ๋๊ฐ๋ ๊น์ง ์ ์ง๋๋ ์ค์ฝํ session: ์น ์ธ์
์ด ์์ฑ๋๊ณ ์ข
๋ฃ๋ ๋ ๊น์ง ์ ์ง๋๋ ์ค์ฝํ application: ์น์ ์๋ธ๋ฆฟ ์ปจํ
์คํธ์ ๊ฐ..
์คํ๋ง ๋น์ ๋ผ์ดํ ์ฌ์ดํด ์คํ๋ง ๋น์ ๊ฐ๋จํ๊ฒ ๋ค์๊ณผ ๊ฐ์ ๋ผ์ดํ์ฌ์ดํด์ ๊ฐ์ง๋ค. โก๏ธ ๊ฐ์ฒด ์์ฑ -> ์์กด๊ด๊ณ ์ฃผ์
์คํ๋ง ๋น์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์์กด๊ด๊ณ ์ฃผ์
์ด ๋ค ๋๋ ๋ค์์์ผ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ค๋น๊ฐ ์๋ฃ๋๋ค. ๋ฐ๋ผ์ ์ด๊ธฐํ ์์
์ ์์กด๊ด๊ณ ์ฃผ์
์ด ๋ชจ๋ ์๋ฃ๋๊ณ ๋ ๋ค์์ ํธ์ถํด์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ๋ฐ์๊ฐ ์์กด๊ด๊ณ ์ฃผ์
์ด ๋ชจ๋ ์๋ฃ๋ ์์ ์ ์ด๋ป๊ฒ ์ ์ ์์๊น? ์คํ๋ง์ ์์กด๊ด๊ณ ์ฃผ์
์ด ์๋ฃ๋๋ฉด ์คํ๋ง ๋น์๊ฒ ์ฝ๋ฐฑ ๋ฉ์๋๋ฅผ ํตํด์ ์ด๊ธฐํ ์์ ์ ์๋ ค์ฃผ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์คํ๋ง์ ์คํ๋ง ์ปจํ
์ด๋๊ฐ ์ข
๋ฃ๋๊ธฐ ์ง์ ์ ์๋ฉธ ์ฝ๋ฐฑ์ ์ค๋ค. ๋ฐ๋ผ์ ์์ ํ๊ฒ ์ข
๋ฃ ์์
์ ์งํํ ์ ์๋ค. ์คํ๋ง ๋น์ ์ ์ฒด ์ด๋ฒคํธ ๋ผ์ดํ์ฌ์ดํด โก๏ธ ์คํ๋ง์ปจํ
์ด๋์์ฑ -> ์คํ๋ง๋น์์ฑ -> ์์กด๊ด๊ณ์ฃผ์
..
์๋ ๋น ๋ฑ๋ก (์ปดํฌ๋ํธ ์ ๋
ธํ
์ด์
์ด ๋ถ์ ๊ฒ๋ค์ ์ ์ธํ๊ณ ) @Bean์ ํตํด ๋ฑ๋ก๋๋ ๊ฒ. AppConfig์ ๊ฐ์ด ์๋ฐ ์ค์ ํ์ผ์ ์ถ๊ฐํ์ฌ ์๋ ๋น ๋ฑ๋กํ๋ฉด ๋๋ค. ์๋ ๋น ๋ฑ๋ก์ ์ธ์ ์ฌ์ฉํ๋ฉด ์ข์๊น? 1. ๊ธฐ์ ์ง์ ๋น ์ ํ๋ฆฌ์ผ์ด์
์ ํฌ๊ฒ ์
๋ฌด ๋ก์ง๊ณผ ๊ธฐ์ ์ง์ ๋ก์ง์ผ๋ก ๋๋ ์ ์๋ค. ์
๋ฌด ๋ก์ง ๋น: ์น์ ์ง์ํ๋ ์ปจํธ๋กค๋ฌ, ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ด ์๋ ์๋น์ค, ๋ฐ์ดํฐ ๊ณ์ธต์ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฑ์ด ๋ชจ๋ ์
๋ฌด ๋ก์ง์ด๋ค. ๋ณดํต ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ๊ฐ๋ฐํ ๋ ์ถ๊ฐ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋๋ค. ์
๋ฌด ๋ก์ง์ ์ซ์๋ ๋งค์ฐ ๋ง๊ณ ์ ์ฌํ ํจํด์ ๊ฐ์ง๊ณ ์๋ค. ๋ณดํต ๋ฌธ์ ๊ฐ ๋ฐ์ํด๋ ์ด๋ค ๊ณณ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ๋ช
ํํ๊ฒ ํ์
ํ๊ธฐ ์ฝ๋ค. ๊ธฐ์ ์ง์ ๋น: ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ ๊ณตํต ๊ด์ฌ์ฌ(AOP)๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค...
์์กด๊ด๊ณ ์๋ ์ฃผ์
์์ฑ์ ์ฃผ์
์์ฑ์๋ฅผ ํตํด์ ์์กด๊ด๊ณ๋ฅผ ์ฃผ์
๋ฐ๋ ๋ฐฉ์ ๋ถ๋ณ, ํ์ ์์กด๊ด๊ณ์ ์ฌ์ฉ ์์ฑ์๊ฐ ๋ฑ 1๊ฐ๋ง ์์ผ๋ฉด @Autowired๋ฅผ ์๋ตํด๋ ์๋ ์ฃผ์
๋๋ค. ์์ ์ ์ฃผ์
์ ํ, ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ์๋ ์์กด๊ด๊ณ์ ์ฌ์ฉ ํ๋ ์ฃผ์
ํ๋์ ๋ฐ๋ก ์ฃผ์
ํ๋ ๋ฐฉ๋ฒ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ์ง๋ง ์ถํ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํด ํ
์คํธ ํ๊ธฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์๋ค. ๋๋๋ก์ด๋ฉด ์ฌ์ฉํ์ง ๋ง๊ณ ํ
์คํธ ์ฝ๋์์๋ง ์ฌ์ฉํ๋๋ก ํ์ ์ผ๋ฐ ๋ฉ์๋ ์ฃผ์
์ผ๋ฐ ๋ฉ์๋๋ฅผ ํตํด ์ฃผ์
๋ฐ์ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์ ์ฌ์ฉํ์ง ์๋๋ค ์ต์
์ฒ๋ฆฌ ์ฃผ์
ํ ์คํ๋ง ๋น์ด ์์ด๋ ๋์ํด์ผ ํ ๋๊ฐ ์๋ค. ์ด๋ด๋ ์ต์
๊ฐ์ ์ด์ฉํด ์ฒ๋ฆฌํ๋ฉด ๋๋ค. @Autowired(required=false) : ์๋ ์ฃผ์
ํ ๋์์ด ์์ผ๋ฉด ์์ ์ ๋ฉ์๋ ์์ฒด๊ฐ ํธ์ถ ์๋จ org...