Srping ํ๋ ์์ํฌ๋ 20์ฌ๊ฐ์ ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ํด๋น ๋ชจ๋๋ค์ ์์ 'Overview of Spring Framework' ๋ค์ด์ด๊ทธ๋จ์์ ๋ณด๋ ๊ฒ๊ณผ ๊ฐ์ด Data Access/Integration, Web, AOP, Core Container, Instrumentation, Test๋ก ๊ทธ๋ฃนํ๋๋ค.
๐ก Core Container
Core Container๋ Core, Beans, Context, spEL๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- Core
Spring ํ๋ ์์ํฌ์ ๊ธฐ๋ณธ ๋ถ๋ถ์ ์ ๊ณตํ๋ฉฐ, Spring์ ๋ชจ๋ ๊ธฐ๋ฅ๋ค์ Core ๋ชจ๋์ ์ธํฐํ์ด์ค์ ํด๋์ค๋ฅผ ๊ตฌํ/์์๋ฐ์
- Beans
์ฃผ๋ก ์ฌ์ฉํ๋ Bean ์ค๋ธ์ ํธ์ BeanFactory๋ฅผ ์ ๊ณตํ๋ ๋ชจ๋๋ก, IoC/DI ๊ธฐ๋ฅ์ ์ ๊ณต
- Context
Core์ Beans ๋ชจ๋์ ๊ธฐ๋ฅ์ ๊ธฐ๋ฐ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
๋ด ์ ์ ๋ฐ ๊ตฌ์ฑ๋ ๋ชจ๋ ๊ฐ์ฒด์ ์ ๊ทผํ๊ณ ์ ์ดํ๋ ์์
์ ๋ด๋น, BeanFactory๋ฅผ ์์ํ๋ ApplicationContext ์ธํฐํ์ด์ค๊ฐ Context ๋ชจ๋์ ์ค์ ์
- Expression Language(SpEL)
runtime ์ Bean ๊ฐ์ฒด๋ฅผ ์กฐํํ๊ณ ์กฐ์ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต, ์ธ์ด๊ตฌ๋ฌธ์ Unified EL๊ณผ ๋น์ทํ์ง๋ง ๋ฉ์๋ ํธ์ถ ๋ฐ ๊ธฐ๋ณธ ๋ฌธ์ ์ด ํ
ํ๋ฆฟ ๊ธฐ๋ฅ ๋ฑ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํจ
๐ก Data Access/Integration
Data Access/Integration ๊ณ์ธต์๋ JDBC, ORM, OXM, JMS, Transaction ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- JDBC(Java Database Connectivity)
JDBC ๊ด๋ จ ์ฝ๋ฉ์ ํ์์ฑ์ ์ ๊ฑฐํ ์ ์๋๋ก JDBC ์ถ์ํ๋ฅผ ์ ๊ณต
- ORM(Object Relational Mapping)
JPA, JDO, Hibernate ๋ฐ iBatis ๋ฑ ๊ฐ์ฒด ๊ด๊ณํ ๋งคํ API์ ๋ํ ํตํฉ ๋ ์ด์ด ์ ๊ณต
- OXM(Object XML Mapping)
JAXB, Castor, XMLBeans, JiBX, XStream ๋ฑ์ Object/XML ๋งคํ์ ์ง์ํ๋ ์ถ์ํ ๊ณ์ธต์ ์ง์
- JMS(Java Message Service)
๋ฉ์ธ์ง ์์ฑ ๋ฐ ์๋น๋ฅผ ์ํ ๊ธฐ๋ฅ ์ ๊ณต
- Transaction
POJO ํ๋ก๊ทธ๋๋ฐ๊ณผ ํน์ํ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ํด๋์ค๋ฅผ ์ํด Programmatic/Declarative transaction management ๊ธฐ๋ฅ์ ์ง์
- Programmatic transaction management
์๋์ ๊ฐ์ด ํธ๋์ญ์
๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฝ๋๋ก ๊ตฌํํ๋ ๊ฒ์ผ๋ก, ํธ๋์ญ์
์๊ฐ ์ ์ ๋ ์ ํฉํ ๋ฐฉ์์ด๋ค.
- Declarative transaction management
์ ์ธ์ ํธ๋์ญ์
๊ด๋ฆฌ๋ผ๊ณ ํ๋ฉฐ @Tranaction
์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ ์ ์ธํ๋ค. ํธ๋์ญ์
์๊ฐ ๋ง์ ๋ ์ ํฉํ๋ฉฐ, AOP๋ฅผ ํตํด ๊ด๋ฆฌ๋์ด ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํธ๋์ญ์
๊ด๋ฆฌ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค.
์ด๋ฏธ์ง ์ถ์ฒ : Spring Transaction Propagation
๐ก Web
Web ๊ณ์ธต์ Web, Servlet, Portlet, WebSocket ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค. (Web-Struts ๋ชจ๋๋ ์ง์ํ์ผ๋ Spring 3.0๋ถํฐ๋ ์ ์ธ๋๋ค.)
- Web
multipart file-upload, ์๋ธ๋ฆฟ ๋ฆฌ์ค๋์ WebApplicationContext๋ฅผ ํตํ IoC ์ปจํ
์ด๋ ์ด๊ธฐํ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ์น ์งํฅ ํตํฉ ๊ธฐ๋ฅ์ ์ ๊ณต, ์น๊ณผ ๊ด๋ จ๋ Spring์ ์๊ฒฉ ์ง์ ๊ธฐ๋ฅ์ด ํฌํจ๋จ.
multipart file-upload: MultipartFile
์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ํฐ ํ์ผ์ ์ฒญํฌ ๋จ์๋ก ์ชผ๊ฐ์ ํจ์จ์ ์ผ๋ก ํ์ผ์ ์
๋ก๋ํ๋ ๊ธฐ๋ฅ
servlet listner: ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ํ๋ ์ฃผ์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ณ , ๊ฐ ์ด๋ฒคํธ์ ํน๋ณํ ์์
์ด ํ์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉ
- Servlet
์น ์ ํ๋ฆฌ์ผ์ด์
์ model-view-controller(MVC) ๊ธฐ๋ฅ์ด ๊ตฌํ๋ ๋ชจ๋๋ก spring-webmvc
๋ชจ๋๊ณผ ๋์ผ. ๋๋ฉ์ธ ๋ชจ๋ธ ์ฝ๋์ ์น ์์์ ๊น๋ํ๊ฒ ๋ถ๋ฆฌํ ์ ์๋๋ก ์ง์ํจ
- Portlet
ํฌํ๋ฆฟ(Portlet: ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์น ์ปดํฌ๋ํธ๋ก ์์ฒญ์ ์ฒ๋ฆฌ ๋ฐ ๋์ ์ปจํ
์ธ ๋ฅผ ์ฒ๋ฆฌ) ํ๊ฒฝ์์ ์ฌ์ฉํ MVC ๊ตฌํ์ ์ ๊ณตํ๊ณ Web-Servlet ๋ชจ๋์ ๊ธฐ๋ฅ์ ๋ฏธ๋ฌ๋งํจ
- WebSocket
Spring 4.0๋ถํฐ ๋์
๋ ๋ชจ๋๋ก, ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ํต์ ์ ํ ๋ฒ ํต์ ์ ํ๋ฉด ๊ณ์ ์ ์ง๋๋ ๋์์ ์๋ฐฉํฅ ํต์ ์ ํ ์ ์๋ ์น์์ผ ๊ธฐ๋ฅ์ ์ ๊ณต
Spring 3.0๋ถํฐ Web ๊ณ์ธต์์ ์ฌ๋ผ์ง ๋ชจ๋
- Web-Struts
Spring ์ ํ๋ฆฌ์ผ์ด์
๋ด์์ ์ ํต์ ์ธ Structs ์น ๊ณ์ธต์ ํตํฉํ๊ธฐ ์ํ ํด๋์ค๋ฅผ ์ง์ํ์ผ๋, Spring 3.0๋ถํฐ๋ ์ฌ์ฉ๋์ง ์๊ณ Struts 2.0์ ์ฌ์ฉํ๊ฑฐ๋ Spring MVC ์๋ฃจ์
์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ ๊ฒ์ ๊ถ์ฅํจ.
- Struts: ์ํ์น ํ๋ก์ ํธ์ ์ผ๋ถ๋ก ์งํ๋๊ณ ์๋ MVC๋ชจ๋ธ์ ๊ธฐ๋ฐํ ์น ํ๋ ์์ํฌ, Java EE ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์คํ ์์ค ํ๋ ์์ํฌ์ด๋ค.
๐ก ๊ธฐํ ๋ชจ๋
- AOP
AOP ๋ชจ๋์ ํตํด ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์
- Instrumentation
ํน์ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์์ ์ฌ์ฉํ ํด๋์ค ๊ณ์ธก ๋ฐ ํด๋์ค ๋ก๋ ๊ธฐ๋ฅ์ ์ ๊ณต
- Messaging
๋ฉ์์ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ฐ์ด ๋๋ ์ฃผ์ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํจ. ์น์์ผ ํ์ ํ๋กํ ์ฝ๋ก STOMP๋ฅผ ์ง์ํ๋ฉฐ, ์น์์ผ ํด๋ผ์ด์ธํธ์์ STOMP ๋ฉ์์ง๋ฅผ ๋ผ์ฐํ
ํ๊ณ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ด๋
ธํ
์ด์
๊ธฐ๋ฅ์ ํฌํจํจ
- Aspects
AOP ํ๋ ์์ํฌ์ธ AspectJ์์ ํตํฉ ๊ธฐ๋ฅ์ ์ ๊ณต
- Test
JUnit, TestNG ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํด Spring ๊ตฌ์ฑ ์์๋ฅผ ํ
์คํธํ ์ ์๋๋ก Test ๋ชจ๋ ์ง์
๐ก Spring ๋ชจ๋๊ฐ ๊ด๊ณ๋
์ฐธ๊ณ ๋ฌธํ ๋ฐ ์ฌ์ดํธ
Introduction to Spring Framework - docs.spring.io
[tutorialspoint] Spring Framework - Architecture
[Spring]์คํ๋ง ํ๋ ์์ํฌ์ ์ฃผ์ ๋ชจ๋๋ค์ ์์๋ณด์ - outstanding
Spring Transaction Propagation
Struts 1: ์คํธ๋ฌ์ธ ๋ ๋ฌด์์ธ๊ฐ - ์ฅ์ค
[Spring]์ฃผ์ ๋ชจ๋ ๊ตฌ์ฑ - ๋ฅ๊ตฌ์ ํ ๊นฝ์ด