SPRING
๐ SPRING
๐ SPRING
SPRING ์ ํ์๋ฐฐ๊ฒฝ
SPRING์ ์์ ๋ณด๊ธฐ ์ ์ SPRING์ ํ์ ๋ฐฐ๊ฒฝ ๋จผ์ ์ดํด ๋ณด์. ๊ทธ๋ผ SPRING์ ์ฌ์ฉ์ ๊ดํ ์ดํด๊ฐ ๋ ์ ๋ ๊ฒ์ด๋ค.
๊ธฐ์กด์๋ EJB ( Enterprise JavaBean ) ๋ฅผ ์ฌ์ฉํด์ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ์๋ค. ์ฌ๊ธฐ์ web์์๋ ๋์์๋ JavaBean์ ์๋ฐ ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ๋๋ก ์ฆ, ์ปดํฌ๋ํธํ์ํฌ ์ ์๋ ์ฝ๋ฉ ๋ฐฉ์นจ์ ์ ์ํ ๊ฒ์ด๋ค.
EJB๋ ๋น์ฆ๋์ค ๊ฐ์ฒด๋ค์ ๊ด๋ฆฌํ๋ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค์ด์ ํ์ํ ๋๋ง๋ค ์ปจํ
์ด๋๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ ์์ผ๋ก ๊ด๋ฆฌํ์ ๋ผ๋ ์ทจ์ง๋ก ํ์ํ๋๋ฐ,
๊ทธ๋ฌ๋ EJB ๋ ํ์ค์์ ๋ฐ์ํ๊ธฐ์๋ ๊ณผ์ ์ด ๋๋ฌด ๊ฑฐ์ฐฝํ๊ณ ๋ณต์กํ ์คํํ ๊ฐ์ง๊ณ ์์ด ๊ฐ๋ฐ์ ํจ์จ์ด ๋จ์ด์ก๋ค. ( EJB ์๋ฒ๋ ํ์์ ์ด์๋ค. )
์ด ๋ Rod Johnson ์ด EJB๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ํฐํ๋ผ์ด์ฆ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๋ค. ์ด๊ฒ์ด ์คํ๋ง์ ๋ชจํ์ด๋ค.
ํน์ ํด๋์ค๋ฅผ ์์ํ๊ฑฐ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ง ์๋ ํ๋ฒํ ์๋ฐ ํด๋์ค ( POJO , ๋์จํ JavaBean , Spring Bean )๋ฅผ ์ด์ฉํ์ฌ ๋จ์ํ์ง๋ง EJB์์ ์ ๊ณตํ๋ ๊ณ ๊ธ ๊ธฐ์ ์ ์ ๊ณตํ๋ Spring์ ์ฐฝ์ํ์๋ค.
POJO + ๊ฒฝ๋ ํ๋ ์์ํฌ
- POJO ( Plain Old Java Object )
-
ํน์ ํ๋ ์ ์ํฌ๋ ๊ธฐ์ ์ ์์กด์ ์ด์ง ์์ ์๋ฐ ๊ฐ์ฒด
- ํน์ ๊ธฐ์ ์ ์ข ์์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ์์ฐ์ฑ, ์ด์์ฑ ํฅ์
- Plain : component interface๋ฅผ ์์๋ฐ์ง ์๋ ํน์ง ( ํน์ framework์ ์ข ์ x )
- Old : EJB ์ด์ ์ Java Class ๋ฅผ ์๋ฏธ
-
ํน์ ํ๋ ์ ์ํฌ๋ ๊ธฐ์ ์ ์์กด์ ์ด์ง ์์ ์๋ฐ ๊ฐ์ฒด
- ๊ฒฝ๋ ํ๋ ์ ์ํฌ
- EJB ๊ฐ ์ ๊ณตํ๋ ์๋น์ค๋ฅผ ์ง์ํด ์ค ์ ์๋ ํ๋ ์ ์ํฌ ๋ฑ์ฅ
- Hibernate, JDO, iBatis(MyBatis), Spring
- POJO + ๊ฒฝ๋ ํ๋ ์ ์ํฌ
- EJB ์๋ฒ ๊ฐ์ ๊ฑฐ์ฐฝํ ์ปจํ ์ด๋๊ฐ ํ์ ์๋ค.
- ์คํ์์ค ํ๋ ์ ์ํฌ๋ผ ์ฌ์ฉ์ด ๋ฌด๋ฃ
- ๊ฐ์ข ๊ธฐ์ ์ฉ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์ํ ์๋นํ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์
- ์คํ๋ง ํ๋ ์์ํฌ๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ์คํ๋ง์ ์น ๋ถ์ผ ๋ฟ๋ง์ด ์๋๋ผ ์ดํ๋ฆฌ์ผ์ด์ ๋ฑ ๋ชจ๋ ๋ถ์ผ์ ์ ์ฉ์ด ๊ฐ๋ฅํ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
SPRING ์ด๋ ๋ฌด์์ธ๊ฐ
SPRING FRAMEWORK
Spring Framework
์ํฐํ๋ผ์ด์ฆ ๊ธ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๊ธฐ ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ข
ํฉ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฒฝ๋ํ ๋ ์๋ฃจ์
์ด๋ค.
JEE๊ฐ ์ ๊ณตํ๋ ๋ค์์ ๊ธฐ๋ฅ์ ์ง์ํ๊ณ ์๊ธฐ ๋๋ฌธ์, JEE๋ฅผ ๋์ฒดํ๋ Framework๋ก ์๋ฆฌ์ก๊ณ ์๋ค.
Spring Framework๋ JEE๊ฐ ์ ๊ณตํ๋ ๋ค์ํ ๊ธฐ๋ฅ ๋ฟ๋ง ์๋๋ผ DI, AOP์ ๊ฐ์ ๊ธฐ๋ฅ๋ ์ ๊ณต์ ํ๋ค.
Spring Framework๋ ์๋ฐ๋ก Enterprise Application ( ๊ธฐ์
์ ์
๋ฌด๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ system )์ ๋ง๋ค ๋ ํฌ๊ด์ ์ผ๋ก ์ฌ์ฉํ๋ Programming ๋ฐ Configuration Model์ ์ ๊ณตํด์ฃผ๋ Framework๋ก Application ์์ค์ ์ธํ๋ผ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค.
์ฆ ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ๊ณ ์ค์ํ๊ธฐ ์ฌ์ด low level ์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ Business Logic ๊ฐ๋ฐ์ ์ ๋
ํ ์ ์๋๋ก ํด์ค๋ค.
SPRING FRAMEWORK์ ๊ตฌ์กฐ
Spring ์ผ๊ฐํ
Enterprise Application ๊ฐ๋ฐ ์ ๋ณต์กํจ์ ํด๊ฒฐํ๋ Spring์ ํต์ฌ์ด๋ค.
-
POJO ( Plain Old Java Object )
- ํน์ ํ๊ฒฝ์ด๋ ๊ธฐ์ ์ ์ข ์์ ์ด์ง ์์ ๊ฐ์ฒด์งํฅ ์๋ฆฌ์ ์ถฉ์คํ ์๋ฐ๊ฐ์ฒด
- ํ ์คํธํ๊ธฐ ์ฉ์ดํ๋ฉฐ, ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ์์ ๋กญ๊ฒ ์ ์ฉํ ์ ์๋ค.
- ์์ฐ์ฑ๊ณผ ์ด์์ฑ์ด ์ข๋ค.
- getter / setter ๋ฅผ ๊ฐ์ง ๋จ์ํ ์๋ฐ ์ค๋ธ์ ํธ
-
PSA ( Portable Service Abstraction )
- ํ๊ฒฝ๊ณผ ์ธ๋ถ๊ธฐ์ ์ ๋ณ๊ฒฝ๊ณผ ๊ด๊ณ์์ด ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ๊ธฐ์ ์ ์ ๊ทผํ ์ ์๊ฒ ํด์ฃผ๋ ์ค๊ณ ์์น, ์๋น์ค ์ถ์ํ
- ํธ๋์ญ์ ์ถ์ํ, OXM ์ถ์ํ, ๋ฐ์ดํฐ ์์ธ์ค์ Exception ๋ณํ ๊ธฐ๋ฅ ๋ฑ ๊ธฐ์ ์ ์ธ ๋ณต์กํจ์ ์ถ์ํ๋ฅผ ํตํด Low Level์ ๊ธฐ์ ๊ตฌํ ๋ถ๋ถ๊ณผ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌ
- ์๋ฅผ ๋ค๋ฉด DB์ ๊ด๊ณ์์ด ๋์ผํ๊ฒ ์ ์ฉ ํ ์ ์๋ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฐฉ์
-
IoC ( Inversion of Control ) / DI ( Dependency Injection )
- IoC๋ ์ธ์คํด์ค ( ๊ฐ์ฒด )์ ์์ฑ๋ถํฐ ์๋ฉธ๊น์ง ๊ฐ์ฒด ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฐ์๊ฐ ํ๋ ๊ฒ์ด ์๋๋ผ ์ปจํ ์ด๋๊ฐ ๋์ ํด์ฃผ๋ ๊ฒ
- ์ ์ด๊ถ์ด ๊ฐ๋ฐ์๊ฐ ์๋ IoC์๊ฒ ์๋ค.
- DI ๋ ์ ์ฐํ๊ฒ ํ์ฅ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋๊ณ ๊ฐ์ฒด ๊ฐ์ ์์กด๊ด๊ณ๋ ์ธ๋ถ์์ ๋ค์ด๋๋ฏนํ๊ฒ ์ค์ ( ์์กด๊ด๊ณ๊ฐ ๋ด๋ถ๊ฐ ์๋ ์ธ๋ถ์์ ์ ์ )
- ํ์ํ ๋ถ๋ถ์ ๋ฃ์๋ค ๋บ๋ค ํ๋ฉด์ ์ ์ ํ ์ํฉ์ ํ์ํ ๊ธฐ๋ฅ์ ํด๋ผ ์ ์๋ค.
-
AOP ( Aspect Oriented Programming )
- ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๋ฅผ ํตํด์ ์ํํธ์จ์ด์ ๋ชจ๋์ฑ์ ํฅ์
- ๊ณตํต ๋ชจ๋์ ์ฌ๋ฌ ์ฝ๋์ ์ฝ๊ฒ ์ ์ฉ๊ฐ๋ฅ
- ์ฌ๋ฌ ๊ฐ์ฒด์ ๊ณตํต์ผ๋ก ์ ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌ๋ถํจ์ผ๋ก์จ ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ์ฃผ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ
- ์๋ฅผ ๋ค๋ฉด exception์ด ๋ฐ์ํ๋ฉด ์ด๋๋ก ๊ฐ๋ผ ( try-catch ํ์ x )
SPRING FRAMEWORK ์ฃผ์ ๋ชจ๋
โ ๋ชจ๋์ด๋ ํ ์์คํ
์ ์ฌ๋ฌ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌ์ฑ์์๋ค์ด๋ค.
Spring ์ ๋ ๊ณ ๋ธ๋ญ์ ์๊ฐํด๋ผ.
ํ์์ ์ผ๋ก Spring core ๊น๊ณ ์์ ์ํ๋ ๊ฒ์ ๊น๋ค.
- Spring Core
- Spring Framework์ ํต์ฌ ๊ธฐ๋ฅ์ ์ ๊ณต( ์ปจํ ์ด๋ ์ญํ )
- Core ์ปจํ ์ด๋์ ์ฃผ์ ์ปดํฌ๋ํธ๋ Bean Factory ์ด๋ค.
- Spring Context
- Spring์ ์ปจํ ์ด๋๋ก ๋ง๋ ๊ฒ์ด Spring core์ BeanFactory ๋ผ๋ฉด Spring์ Framework๋ก ๋ง๋ ๊ฒ์ Context module ์ด๋ค.
- ๊ตญ์ ํ๋ ๋ฉ์ธ์ง, Application ์๋ช ์ฃผ๊ธฐ ์ด๋ฒคํธ , ์ ํจ์ฑ ๊ฒ์ฆ์ ์ง์ํจ์ผ๋ก์จ BeanFactory์ ๊ฐ๋ ์ ํ์ฅํ๋ค.
- Spring AOP
- ์ค์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํตํด AOP ๊ธฐ๋ฅ์ Spring Framework์ ์ง์ ํตํฉ ์ํจ๋ค.
- Spring DAO
- Spring JDBC DAO ์ถ์ ๋ ์ด์ด๋ ๋ค๋ฅธ DB ๋ฒคํฐ๋ค์ ์์ธ ํธ๋ค๋ง๊ณผ ์ค๋ฅ ๋ฉ์ธ์ง๋ฅผ ๊ด๋ฆฌํ๋ ์ค์ํ ์์ธ๊ณ์ธต์ ์ ๊ณตํ๋ค.
- Spring ORM
- Spring Framework๋ ์ฌ๋ฌ ORM ( Object Relational Mapping ) Framework์ ํ๋ฌ๊ทธ์ธ ๋์ด, Object Relational ํด์ ์ ๊ณตํ๋ค.
- Spring Web
- Web Context Module ์ Application Context module ์์์ ๊ตฌํ๋์ด Web ๊ธฐ๋ฐ Application์ Context ๋ฅผ ์ ๊ณตํ๋ค.
- Spring Web MVC
- Spring Framework๋ ์์ฒด์ ์ผ๋ก MVC ํ๋ ์ ์ํฌ๋ฅผ ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ ์คํ๋ง๋ง ์ฌ์ฉํด๋ MVC ๊ธฐ๋ฐ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ด๋ ต์ง ์๊ฒ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค.