๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

1. SpringFramework ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

์ด์ „์— ์‚ฌ์šฉํ•˜๋˜ ํ™˜๊ฒฝ์€ EJB์ด๋‹ค. EJB๋Š” ๋‹น์‹œ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ถˆํŽธํ•œ ์ ์ด ๋งŽ์•˜๋‹ค.

 ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋ฐ˜์˜ํ•˜๋Š” ๊ณผ์ • ์ž์ฒด๊ฐ€ ๊ฑฐ์ฐฝํ•˜์˜€์œผ๋ฉฐ, ๊ธฐ๋Šฅ์€ ์ข‹์ง€๋งŒ ๋ณต์žกํ•œ ์ŠคํŽ™์œผ๋กœ ์ธํ•ด ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์กŒ๋‹ค.

๋˜ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” EJB๋งŒ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” EJB ์„œ๋ฒ„๊ฐ€ ๋˜ ๋”ฐ๋กœ ํ•„์š”ํ–ˆ์œผ๋ฉฐ, ํŠน์ • ๊ธฐ์ˆ ์— ์ข…์†์ ์ด์—ˆ๋‹ค.

 ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ์›น์‚ฌ์ดํŠธ๊ฐ€ ์ ์  ์ปค์ง์— ๋”ฐ๋ผ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธ‰( ๊ธฐ์—… ์ˆ˜์ค€ )์˜ ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ทธ์— ๋”ฐ๋ผ POJO + ๊ฒฝ๋Ÿ‰ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์˜€๋‹ค. ์ด๊ฒƒ์ด Spring Framework์ด๋‹ค.

POJO (Plain Old Java Object)

=> ์˜›๋‚ (Old) ์ž๋ฐ”(Java) ๊ฐ์ฒด๋ฅผ(Object) ์œ ์ง€ํ•œ๋‹ค(Plain)

- ํŠน์ • ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๊ธฐ์ˆ ์— ์˜์กด์ ์ด์ง€ ์•Š์€ ์ž๋ฐ” ๊ฐ์ฒด์ด๋‹ค.

- ์ข…์†์ ์ด์ง€ ์•Š์œผ๋ฏ€๋กœ ์ƒ์‚ฐ์„ฑ, ์ด์‹์„ฑ์ด ํ–ฅ์ƒ๋œ๋‹ค.

 

๊ฒฝ๋Ÿ‰ํ”„๋ ˆ์ž„์›Œํฌ

EJB๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค. (Hibernate(JPA), iBatis(MyBatis), Spring)

 

POJO + ๊ฒฝ๋Ÿ‰ํ”„๋ ˆ์ž„์›Œํฌ

๊ฑฐ์ฐฝํ•œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š” ์—†์œผ๋ฉฐ, ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์‚ฌ์šฉ์ด ๋ฌด๋ฃŒ์ด๋‹ค.๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ํฐ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค. ์›น ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ ๋ชจ๋“  ๋ถ„์•ผ์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

2. SpringFramework ํŠน์ง•

SpringFramework๋Š” IoC์™€ AOP๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณต์žกํ•˜๊ณ  ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด low level์— ๋งŽ์ด ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์œผ๋ฉด์„œ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ฐœ๋ฐœ์— ์ „๋…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.์Šคํ”„๋ง์˜ ํŠน์ง•์œผ๋กœ๋Š” ์Šคํ”„๋ง ์‚ผ๊ฐํ˜•์ด ์žˆ๋‹ค.1. POJO2. PSA3. IoC/DI4. AOP (๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ) - ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ, ๊ณตํ†ต ๋ชจ๋“ˆ์„ ์—ฌ๋Ÿฌ ์ฝ”๋“œ์— ์ ์šฉ ๊ฐ€๋Šฅ5. ๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ - ์Šคํ”„๋ง์€ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ, ์ž๋ฐ” ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ๊ณผ ๊ฐ™์€ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•œ๋‹ค.

 

3. SpringFramework Module

- Spring Core ( ๊ธฐ๋ฐ˜์ด ๋จ, ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ œ๊ณต )

- Spring AOP

- Spring ORM

- Spring DAO(spring-jdbc)

- Spring Context(spring-context)

- Spring Web

- Spring MVC

 

4. IoC์™€ DI

IoC์˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ DI์ด๋‹ค.

IoC

IoC๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ Assembler๋ฅผ ํ†ตํ•ด ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ˜๋‹ค. (loose coupling)(Assembler๋Š” FacotryํŒจํ„ด๊ณผ SingletonํŒจํ„ด์„ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ค.)๋Ÿฐํƒ€์ž„ ์‹œ ํด๋ž˜์Šค ๊ฐ„ ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ์ด ๋œ๋‹ค.IoC์˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์€ DI(Dependency Injection, ์˜์กด์„ฑ ์ฃผ์ž…)์™€ DL(Dependency Lookup)์ด ์žˆ๋‹ค.DI๋Š” ๊ฐ์ฒด๋ฅผ ๋‚ด๊ฐ€ ์ฐพ์•„์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋‚˜์—๊ฒŒ ์•„๋ฌด ์ด์œ  ์—†์ด ๊ทธ๋ƒฅ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.๋‚ด๊ฐ€ ํ•„์š”ํ•˜๋“  ๋ง๋“  ๋ƒ…๋‹ค ์ฃผ๋Š” ๊ฒƒ์ด DI์ด๋‹ค. => ์ œ์–ด์˜ ์—ญํ–‰(IoC)DL์€ ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ lookup context๋ฅผ ํ†ตํ•ด์„œ ์–ป๋Š” ๋ฐฉ์‹์ด๋‹ค.