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์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.