๐ก Spring์์ ์ฌ์ฉํ๋
Annotation
๋ค์ด ๊ฐ๊ฐ ์ด๋ค ์ญํ ์ ์ํํ๋์ง ์์๋ณด๋ ๋ฐฉ๋ฒ์ ๋ํด ํ์ตํ๋ค๋ฉด ๋ชจ๋ฅด๋Annotation
์ด ๋์ฌ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง ์ค์ค๋ก ์ฐพ์๋ผ ์ ์๋ค!
Spring Bean์ ๋ฑ๋กํ๋ ์ญํ ์ ์ํํ๋ค.
Spring Bean์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ ์์๋ฅผ ์ ์ํ๋ ๊ฐ์ฒด์ด๋ค.
WAS๊ฐ Servlet ์ฝ๋๋ฅผ ์ฝ์ด ์ปจํ ์ด๋์ ๋ฑ๋กํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ญํ !
@Indexed
๐ Servlet์ ์ง์ํ๋ WAS ๋ด๋ถ์๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ ์ด๊ธฐํ, ์์ฑ, ๊ด๋ฆฌ, ํธ์ถ, ์ข ๋ฃํ๋ ์ญํ ์ ์ํํ๋ค.
Servlet์ ์๋ช ์ฃผ๊ธฐ
Servlet์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์์ฑ ๋ฐ ๊ด๋ฆฌํ๋ค.
์ฆ, WAS(์๋ธ๋ฆฟ ์ปจํ ์ด๋ ํฌํจ)๊ฐ ์ข ๋ฃ๋ ๋ Servlet๋ ํจ๊ป ์ข ๋ฃ๋๋ค.
Servlet ๊ฐ์ฒด ์์ฑ์์
Servlet ์์ ์ฝ๋
@WebServlet(name="ExampleServlet", urlPatterns = "/example")
public class ExampleServlet extends HttpServlet { // HttpServlet์ ์์๋ฐ์ ๊ตฌํํ๋ค.
@Override
protected void service(
HttpServletRequest request, // HTTP ์์ฒญ ์ ๋ณด๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋๋ Servlet
HttpServletResponse response // HTTP ์๋ต ์ ๋ณด๋ฅผ ์ฝ๊ฒ ์ ๊ณตํ ์ ์๊ฒ ๋ง๋๋ Servlet
) {
// application logic
}
}
@WebServlet(name="Example2Servlet", urlPatterns = "/example2")
// ์์ ๊ฐ์ ์ฝ๋
@WebServlet(name="Example3Servlet", urlPatterns = "/example3")
// ์์ ๊ฐ์ ์ฝ๋
@WebServlet(name="Example4Servlet", urlPatterns = "/example4")
// ์์ ๊ฐ์ ์ฝ๋
Servlet Container๊ฐ ํ๋ ์ผ
์๋ธ๋ฆฟ์ ์ด๊ธฐํ, ์์ฑ, ๊ด๋ฆฌ, ํธ์ถ, ์ข ๋ฃํ๋ ์ญํ ์ ์ํ
์ฑ๊ธํค
์ผ๋ก ๊ด๋ฆฌํ๋ค.๋์ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ํด Multi Thread
๋ฅผ ์ง์ํ๋ค.
๐ Q. ์ฑ๊ธํค์ด ๋ฌด์์ธ๊ฐ์?
๐ฌ A. ์ฑ๊ธํค์ ๊ฐ์ฒด๋ฅผ ํ๋๋ง ์์ฑํ์ฌ ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธgํ๋ค. ํน์ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์ฌ๋ฌ๊ฐ ์์ฑ๋์ง ์๋๋ก ํ์ฌ ์์์ ๋ญ๋น๋ฅผ ๋ฐฉ์งํ๊ณ , ์ธ์คํด์ค๋ฅผ ๊ณต์ ํจ์ผ๋ก์จ ์ํ๋ฅผ ์ผ๊ด๋๊ฒ ์ ์งํ๊ธฐ ์ํจ์ด๋ค. ํ์ง๋ง, ๊ณต์ ๋ณ์ ์ฌ์ฉ์ ์ฃผ์ํด์ผ ํ๋ค.
@Target
์ด ์ ์ธ๋ ํ์ ์ด๋
ธํ
์ด์
์ด ์ด๋ค ๋ฒ์์ ์ ์ฉ๋๋์ง ์ค์ ํ๋ค.@Retention
ํ์์ ์ด๋
ธํ
์ด์
์ด ์ผ๋ง๋ ์ค๋ ์ ์ง๋๋์ง๋ฅผ ๊ฒฐ์ ํ๋ค.SOURCE
์์ค ์ฝ๋(.java)์์๋ง ์ ์ง๋๋ค.
์ปดํ์ผ๋ฌ์ ์ํด ํด๋์ค ํ์ผ๋ก ์ ์ฅ๋์ง ์๋๋ค.
CLASS
์ปดํ์ผ๋ ํด๋์ค ํ์ผ(.class)์ ์ ์ฅ๋์ง๋ง, JVM์ด ์คํ ์ ์ฝ์ง ์๋๋ค. (์ฃผ์๊ณผ ๊ฐ์)
Default ๊ฐ์ด๋ค.
RUNTIME
ํด๋์ค ํ์ผ(.class)์ ์ ์ฅ๋๊ณ , JVM์ ์ํด ๋ฐํ์ ์์ ์ ์ฝ์ ์ ์๋ค.
์ฆ, ์ค์ ๋ฐํ์ ์์ ์ ์ฝ๋์ ๋ฐ์๋์ด ์ํฅ์ ์ค๋ค.