๐ 1. Sprint? & ๊ฐ๋ฐํ๊ฒฝ
Framework VS Library
ํ๋ ์์ํฌ๋ ๊ท์ฐฎ์ ์์
์ ์ค์ด๊ธฐ ์ํด ๋ง๋ค์ด์ง
SpringFramework ๋ฑ์ฅ ๋ฐฐ๊ฒฝ 2
EJB - ํ์ค์์์ ๋ฐ์์ด ์ด๋ ต๋ค.
- ์ฝ๋ ์์ ํ ๋ฐ์ํ๋ ๊ณผ์ ์์ฒด๊ฐ ๊ฑฐ์ฐฝํด ๊ธฐ๋ฅ์ ์ข์ง๋ง ๋ณต์กํ ์คํ์ผ๋ก ์ธํ ๊ฐ๋ฐ์ ํจ์จ์ฑ์ด ๋จ์ด์ง
EJB๋?
- EJB๋ ๊ธฐ์
ํ๊ฒฝ์ ์์คํ
์ ๊ตฌํํ๊ธฐ ์ํ ์๋ฒ์ธก ์ปดํฌ๋ํธ ๋ชจ๋ธ์ด๋ค. ์ฆ, EJB๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์
๋ฌด ๋ก์ง์ ๊ฐ์ง๊ณ ์๋ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ค.
- EJB ์ฌ์์ Java EE์ ์๋ฐ API ์ค ํ๋๋ก, ์ฃผ๋ก ์น ์์คํ
์์ JSP๋ ํ๋ฉด ๋ก์ง์ ์ฒ๋ฆฌํ๊ณ EJB๋ ์
๋ฌด ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ค.
SpringFramework ๋ฑ์ฅ ๋ฐฐ๊ฒฝ3
- ์น ์ฌ์ดํธ๊ฐ ์ ์ ์ปค์ง๋ฉด์ ์ํฐํ๋ผ์ด์ฆ๊ธ์ ์๋น์ค๊ฐ ํ์ํ๊ฒ ๋จ
- ์๋ฐ ์ง์์์๋ EJB๊ฐ ์ํฐํ๋ผ์ด์ฆ๊ธ ์๋น์ค๋ก ๊ฐ๊ด์ ๋ฐ๊ฒ ๋จ
- EJB ์คํ์ ์ ์๋ ์ธํฐํ์ด์ค์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์์ฑํ๋ฏ๋ก ๊ธฐ์กด์ ์์ฑ๋ POJO๋ฅผ ๋ณ๊ฒฝํด์ผ ํจ
- ์ปจํ
์ด๋์ ๋ฐฐํฌ๋ฅผ ํด์ผ ํ
์คํธ๊ฐ ๊ฐ๋ฅํด ๊ฐ๋ฐ ์๋๊ฐ ์ ํ๋จ
- ๋ฐฐ์ฐ๊ธฐ ์ด๋ ต๊ณ , ์ค์ ํด์ผ ํ ๋ถ๋ถ์ด ๋ง์
Rod Johnson์ด EJB๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ํฐํ๋ผ์ด์ฆ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํจ( ์คํ๋ง์ ๋ชจํ )
- AOP๋ DI๊ฐ์ ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ๋ก ์ผ๋ก ๊ฐ๋ฅ
- POJO๋ก ์ ์ธ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ด ๊ฐ๋ฅํด ์ง
SpringFramework ๋ฑ์ฅ ๋ฐฐ๊ฒฝ 4
POJO (Plain Old Java Object) - ์๋ ์๋ฐ์ ๊ฐ์ฒด๋ฅผ ์ ์ง
- ํน์ ํ๋ ์์ํฌ๋ ๊ธฐ์ ์ ์์กด์ ์ด์ง ์์ ์๋ฐ ๊ฐ์ฒด
- ํน์ ๊ธฐ์ ์ ์ข
์์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ์์ฐ์ฑ, ์ด์์ฑ ํฅ์
- Plain : component interface๋ฅผ ์์๋ฐ์ง ์๋ ํน์ง (ํน์ framework์ ์ข
์๋์ง ์๋)
- Old : EJB ์ด์ ์ java class๋ฅผ ์๋ฏธ
๊ฒฝ๋ ํ๋ ์์ํฌ
- EJB๊ฐ ์ ๊ณตํ๋ ์๋น์ค๋ฅผ ์ ๊ณตํด ์ค ์ ์๋ ํ๋ ์์ํฌ ๋ฑ์ฅ
- Hibernate(JPA), JDO, myBatis, Spring
๋ฑ์ฅ ๋ฐฐ๊ฒฝ 5
POJO + Framework
- EJB์๋ฒ์ ๊ฐ์ ๊ฑฐ์ฐฝํ ์ปจํ
์ด๋๊ฐ ํ์ ์๋ค.
- ์คํ ์์ค ํ๋ ์์ํฌ๋ผ ์ฌ์ฉ์ด ๋ฌด๋ฃ
- ๊ฐ์ข
๊ธฐ์
์ฉ ์ดํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ํ์ํ ์๋นํ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ง์
- ์คํ๋ง ํ๋ ์์ํฌ๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ์คํ๋ง์ ์น ๋ถ์ผ ๋ฟ๋ง์ด ์๋๋ผ ์ดํ๋ฆฌ์ผ์ด์
๋ฑ ๋ชจ๋ ๋ถ์ผ์ ์ ์ฉ์ด ๊ฐ๋ฅํ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
Spring Framework? = ๊ฒฝ๋ํ ๋ ์๋ฃจ์
์ด๋ค.
- ๊ธฐ์กด์ ์๋ฐ์ ๋ฌด๊ฑฐ์ ๋ ๋ถ๋ถ์ ์ต์ํํจ
- JEE๋ฅผ ๋์ฒดํ๋ Framework์ด๋ค.
- DI(Dependency Injection) ๋ AOP(Aspect Oriented Programming)์ ๊ฐ์ ๊ธฐ๋ฅ๋ ์ง์ ํ๋ค.
StringFramework์ ๊ตฌ์กฐ
- Spring ์ผ๊ฐํ
- POJO
- PSA
- ํ๊ฒฝ์ ๋ณํ์ ๊ด๊ณ์์ด ์ผ๊ด๋ ๋ฐฉ์์ ๊ธฐ์ ๋ก์ ์ ๊ทผ ํ๊ฒฝ์ ์ ๊ณตํ๋ ์ถ์ํ ๊ตฌ์กฐ๋ฅผ ๋งํจ
- ํน์ ํด๋์ค๊ฐ ์ถ์ํ๋ ์์ ํด๋์ค๋ฅผ ์ผ๊ด๋๊ฒ ๋ฐ๋ผ๋ณด๋ฉฐ ํ์ ํด๋์ค์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ PSA์ ๊ธฐ๋ณธ ๊ฐ๋
์ด๋ค.
- ์ฆ ๊ธฐ์กด ์์ฑ๋ ์ฝ๋๋ฅผ ์์ ํ์ง ์์ผ๋ฉด์ ํ์ฅ ๊ฐ๋ฅ, ์ด๋ ํน์ ๊ธฐ์ ์ ํนํ๋์ด ์์ง ์๋ ์ฝ๋์ด๋ค.
- IoC/DI
- ์ธ๋ถ์์ ๊ฐ์ฒด ๋ง๋ค์ด์ ์ค๊ฑธ ๋ด๊ฐ ๊ฐ์ ธ๋ค๊ฐ ์ฐ๋๊ฑฐ
- DI๋ ์ ์ฐํ๊ฒ ํ์ฅ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋๊ณ ๊ฐ์ฒด ๊ฐ์ ์์กด๊ด๊ณ๋ ์ธ๋ถ์์ ๋ค์ด๋๋ฏนํ๊ฒ ์ค์
- AOP
- ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๋ฅผ ํตํด์ ์ํํธ์จ์ด์ ๋ชจ๋์ฑ์ ํฅ์
- ๊ณตํต ๋ชจ๋์ ์ฌ๋ฌ ์ฝ๋์ ์ฝ๊ฒ ์ ์ฉ๊ฐ๋ฅ
2. IoC & Container
3. ์์กด์ฑ ์ฃผ์
(Dependency Injection, DI)
4. DI - XML
5. DI - Annotation