Spring Basic
๐ Spring Basic
๐ Spring
POJO ํน์ ํด๋์ค๋ฅผ ์์ํ๊ฑฐ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ง ์๋ ํ๋ฒํ ์๋ฐ ํด๋์ค(๋์จํ ๊ฒฐํฉ) ๋ฅผ ์ด์ฉํ๋ฉฐ ๋จ์ํ์ง๋ง EJB์์ ์ ๊ณตํ๋ ๊ณ ๊ธ ๊ธฐ์ ์ ์ ๊ณตํ๋ค.
โ๏ธ EJB์ ๋ฌด๊ฑฐ์ ๋ ๋จ์ ์ ๋ณด์ํด ๋์จ Spring์ ๊ฒฝ๋๊ธ ํ๋ ์์ํฌ๋ก RELEASE๋์๋ค.
๐คพ ์ฃผ์ ์ ๋ต
1. POJO๋ฅผ ์ด์ฉํ ๊ฐ๋ณ๊ณ (lightweight) ๋น์นจํฌ์ (non-invasive) ๊ฐ๋ฐ
2. DI์ ์ธํฐํ์ด์ค ์งํฅ์ ํตํ ๋์จํ ๊ฒฐํฉ๋(loose coupling)
3. Aspect์ ๊ณตํต ๊ท์ฝ์ ํตํ ์ ์ธ์ (declarative) ํ๋ก๊ทธ๋๋ฐ
4. Aspect์ ํ
ํ๋ฆฟ(template)์ ํตํ ๋ฐ๋ณต์ ์ด๊ณ ์ํฌ์ ์ธ(boilerplate) ์ฝ๋ ์ ๊ฑฐ
๐ฆ Container
๊ฐ์ฒด๊ด๋ฆฌ๋ฅผ ์ฃผ๋ก ์ํํ๋ ๊ทธ๋ฆ์ผ๋ก ๋น์ ์์ฑ๊ณผ ๊ด๊ณ, ์ฌ์ฉ, ์๋ช ์ฃผ๊ธฐ๋ฑ์ ๊ด์ฅํ๋๊ณณ. ํ๋ก์ ํธ๋ด์ ์๋ง์ ๊ฐ์ฒด๋ค์ ์์ฑํ๊ธฐ์ํ new, getter/setter ๋ค์ ๊ฐ์ฒด๋ค๋ผ๋ฆฌ ์๋ก ์ฐธ์กฐ๋๊ณ ์๋ค. ์ด๋ฌํ ์ํ๋ฅผ ์์กด์ฑ์ด ๋์ ๊ฒฐํฉ๋๋ฅผ ๋๋ค๋ผ๊ณ ํํํ๋๋ฐ, ๊ฒฐ๊ตญ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์๋ฐ๋๋ ํํ๋ฅผ ๋๋๊ฒ์ด๋ค. ์ด๋ฌํ ๋์ ์์กด์ฑ์ ๋ฎ์ถ๊ธฐ์ํด ์ฌ์ฉํ๋๊ฒ์ด
Spring Container
์ด๋ค.
๐ฎ POJO
Plain Old Java Object, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ณธ ๋ชฉ์ ์ ๋ง๊ฒ ์ฌ์ฉํ๊ธฐ์ํ ํน์ ํ๊ฒฝ์ ์ข ์๋์ง ์๋ ๊ฐ๊ฒฐํ ํด๋์ค๋ฅผ ๋งํ๋ค.
-
Inversion Of Container
- ๊ฐ์ฒด์ ์์ฑ๊ณผ ์ฌ์ฉํ๋ ํ์๋ฅผ ๋ด๋นํ๋ ์ฃผ์ฒด๊ฐ Container๋ก ๋์ด๊ฐ๋๊ฒ์ ๋งํ๋ค.
-
Dependency Injection
- Container ์ธ๋ถ์์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ setter ํน์ ์์ฑ์๋ฅผ ์ด์ฉํด ํน์ ์ํฉ์์ ๊ฐ์ฒด๋ผ๋ฆฌ ์์กดํ๋ ์ํฉ์ผ๋ IoC์ปจํ ์ด๋์์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์ฃผ์ด ์ฌ์ฉ ํ ์ ์๊ฒํ๋๊ฒ.
-
PSA (Portable Service Abstraction)
- ํ๊ฒฝ์ ๋ณํ์ ๊ด๊ณ์์ด ์ผ๊ด๋ ๋ฐฉ์์ ๊ธฐ์ ๋ก์ ์ ๊ทผ ํ๊ฒฝ์ ์ ๊ณตํ๋ ค๋ ์ถ์ํ ๊ตฌ์กฐ
-
AOP (Aspect Oriented Programming )
- ๊ธฐ์กด์ OOP์์ ๋ฐ๋ผ๋ณด๋ ๊ด์ ์ ๋ค๋ฅด๊ฒํ์ฌ ๋ถ๊ฐ๊ธฐ๋ฅ์ ์ธ ์ธก๋ฉด์ผ๋ก ๋ณด์์๋ ๊ณตํต๋ ์์๋ฅผ ์ถ์ถํด ๋ด ์ฌ์ฌ์ฉํ๋๊ฒ. (๋ก๊น , ํธ๋์ญ์ , ๋ณด์)
๐ข ๐DispatcherServlet
Servlet Container
(tomcat)์์ ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ํ๋ ์ ํ ์ด์ ๊ณ์ธต์ ์ ์ผ ์์๋ฌ์ ์ค์์ง์ค์์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๋ Front Controller.