a. Architecture - kimxavi/spring_tutorial GitHub Wiki
Core Container
์ฝ์ด ์ปจํ ์ด๋๋ Core, Beans, Context ๊ทธ๋ฆฌ๊ณ Expression Language(EL) ๋ชจ๋๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- Core : ์ฝ์ด๋ IoC์ DI ๊ธฐ๋ฅ์ ํฌํจํ๊ณ , ํ๋ ์์ํฌ์ ํต์ฌ์ ์ธ ๋ถ๋ถ์ด๋ค.
- Bean : ํฉํ ๋ฆฌ ํจํด์ ๊ตฌํํ BeanFactory๋ฅผ ์ ๊ณตํ๋ค.
- Context : ์ฝ์ด์ ๋น ๋ชจ๋์ ์ํด ์ ๊ณต๋๋ ๊ฒฌ๊ณ ํ ๊ธฐ๋ฐ์ ๋ฐํ์ผ๋ก ๊ทธ๊ฒ์ ์ ์ํ๊ณ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด์ ์ก์ธ์ค ํ ์์๋ ๋งค์ฒด์ด๋ค. ApplicationContext์ ์ธํฐํ์ด์ค๋ ์ปจํ ์คํธ ๋ชจ๋์ ์ค์ฌ์ ์ด๋ค.
- SpEL์ ์ฟผ๋ฆฌ ๋ฐ ๋ฐํ์ ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ์กฐ์ํ๊ธฐ์ํ ๊ฐ๋ ฅํ ํํ ์ธ์ด๋ฅผ ์ ๊ณตํ๋ค.
Data Access/Integration
- JDBC : ์ง๋ฃจํ JDBC ๊ด๋ จ๋ ์ฝ๋ฉ์ ์ ๊ฑฐํ JDBC ์ถ์ํ ๊ณ์ธต์ ์ ๊ณตํ๋ค.
- ORM : JPA, JDO, Hibernate, iBatis ๊ฐ์ Object-relational Mapping API ๋ฅผ ์ํ ํตํฉ ๊ณ์ธต์ ์ ๊ณตํ๋ค.
- OXM : Object์ XML์ ๋งคํ์ ๊ตฌํํ๋ ์ถ์ ๊ณ์ธต. AXB, Castor, XMLBeans, JiBX and XStream.
- JMS : ์๋ฐ ๋ฉ์์ง ์๋น์ค๋ ๋ฉ์์ง ์์ฑ ๋ฐ ์ฌ์ฉ์ ์ํ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ต๋๋ค.
- transaction : ํน๋ณํ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค์ ๋ชจ๋ POJO๋ฅผ ์ํ ํ๋ก๊ทธ๋จ๊ณผ ์ ์ธ์ ์ธ ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
Web
- Web : ์น ๋ชจ๋์ ๋ค์ค ํ์ผ ์ ๋ก๋ ๊ธฐ๋ฅ๊ณผ ์๋ธ๋ฆฟ ๋ฆฌ์ค๋์ ์น ์งํฅ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ IoC ์ปจํ ์ด๋์ ์ด๊ธฐํ์ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ์น - ๊ธฐ๋ฐ ํตํฉ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- Web-MVC : ์คํ๋ง์ MVC ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ตฌํ์ด๋ค.
- Web-Socket : ์น์์ผ ๊ธฐ๋ฐ์ผ๋ก ์น ์ดํ๋ฆฌ์ผ์ด์ ์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ํต์ ๊ฐ์ ์๋ฐฉํฅ ํต์ ์ ์ง์ํ๋ค.
- Web-Portlet : ์น ๋ชจ๋ ํฌํ๋ฆฟ์ ํฌํ๋ฆฟ ํ๊ฒฝ์์ ์ฌ์ฉ๋ MVC ๊ตฌํ์ ์ ๊ณตํ๊ณ , ์น ์๋ธ๋ฆฟ ๋ชจ๋์ ๊ธฐ๋ฅ์ ๋ฐ์ํ๋ค.
Miscellaneous
- AOP : AOP ๋ชจ๋์ ๋ฉ์๋ ์ธํฐ์ ํฐ์ ์์ ํ ๋ถ๋ฆฌ๋์ด์ผ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๋ ํฌ์ธํธ ์ปท์ ์ ์ ํ ์ ์๋๋ก aspect-oriented programming ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค.
- Aspect : ๋ค์ ๊ฐ๋ ฅํ๊ณ ์ฑ์ํ ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ (AOP) ํ๋ ์ ์ํฌ AspectJ๋ก ํตํฉ์ ์ ๊ณตํฉ๋๋ค.
- Instrumentation : ํน์ ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ์์ ์ฌ์ฉํ ์ ์๋ ํด๋์ค ๊ณ์ธก ์ง์ ๋ฐ ํด๋์ค ๋ก๋์ ๊ตฌํ.
- Messaging : ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๋ ์น ์์ผ ์๋ธ ํ๋กํ ์ฝ๋ก STOMP์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๋ํ ์น ์์ผ ํด๋ผ์ด์ธํธ์์ ๋ผ์ฐํ ๋ฐ STOMP ๋ฉ์์ง์ ๋ํ ์ฒ๋ฆฌ ์ด๋ ธํ ์ด์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค.
- Test : JUnit ๋๋ TestNG์ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ์ง์ํฉ๋๋ค.