Search
Duplicate
๐Ÿ˜€

03. Spring?

ํƒœ๊ทธ

Spring framework ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

EJB
โ€ข
EJB(Enterprise Java Bean)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์„ฑ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
Low Level์˜ ํŠธ๋žœ์žญ์…˜์ด๋‚˜ ์ƒํƒœ๊ด€๋ฆฌ, ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋”ฉ, ๋ฆฌ์†Œ์Šค ํ’€๋ง๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ Low Level์˜ API ๋”ฐ์œ„๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„ ์•„๋ฌด ๋ฌธ์ œ ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
EJB์˜ ๋‹จ์ 
โ€ข
์ฝ”๋“œ ์ˆ˜์ • ํ›„ ๋ฐ˜์˜ํ•˜๋Š” ๊ณผ์ • ์ž์ฒด๊ฐ€ ๊ฑฐ์ฐฝํ•ด ๊ธฐ๋Šฅ์€ ์ข‹์ง€๋งŒ ๋ณต์žกํ•œ ์ŠคํŽ™์œผ๋กœ ์ธํ•œ ๊ฐœ๋ฐœ์˜ ํšจ์œจ์„ฑ ๊ฐ์†Œ
โ€ข
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ EJB ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•จ
์Šคํ”„๋ง์˜ ๋“ฑ์žฅ
โ€ข
์ ์ฐจ POJO + ๊ฒฝ๋Ÿ‰ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘
โ€ข
POJO (Plain Old Java Object)
โ—ฆ
ํŠน์ • ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๊ธฐ์ˆ ์— ์˜์กด์ ์ด์ง€ ์•Š์€ ์ž๋ฐ” ๊ฐ์ฒด
โ—ฆ
ํŠน์ • ๊ธฐ์ˆ ์— ์ข…์†์ ์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์‚ฐ์„ฑ, ์ด์‹์„ฑ ํ–ฅ์ƒ
โ—ฆ
Plain : component interface๋ฅผ ์ƒ์†๋ฐ›์ง€ ์•Š๋Š” ํŠน์ง• (ํŠน์ • framework์— ์ข…์†๋˜์ง€ ์•Š๋Š”)
โ—ฆ
Old : EJB ์ด์ „์˜ ์ž๋ฐ” class
โ€ข
๊ฒฝ๋Ÿ‰ ํ”„๋ ˆ์ž„์›Œํฌ
โ—ฆ
EJB๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ์žฅ
โ—ฆ
Hibernate, JDO, Mybatis, Spring

Spring Framework

โ€ข
์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธ‰ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ๋Ÿ‰ํ™” ๋œ ์†”๋ฃจ์…˜
โ€ข
JEE(Java Enterprise Edition)๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋‹ค์ˆ˜์˜ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, JEE๋ฅผ ๋Œ€์ฒดํ•˜๋Š” Framework๋กœ ์ž๋ฆฌ์žก๊ณ  ์žˆ์Œ
โ€ข
JEE๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, DI(Dependency Injection)๋‚˜ AOP(Aspect Oriented Programming)์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ๋„ ์ง€์›ํ•œ๋‹ค.
โ€ข
๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณต์žกํ•˜๊ณ  ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด Low Level์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  Business Logic ๊ฐœ๋ฐœ์— ์ „๋…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

Spring Framework์˜ ๊ตฌ์กฐ

Spring ์‚ผ๊ฐํ˜•

Enterprise Application ๊ฐœ๋ฐœ ์‹œ ๋ณต์žกํ•จ์„ ํ•ด๊ฒฐํ•˜๋Š” Spring์˜ ํ•ต์‹ฌ
POJO (Plain Old Java Object)
โ€ข
ํŠน์ • ํ™˜๊ฒฝ์ด๋‚˜ ๊ธฐ์ˆ ์— ์ข…์†์ ์ด์ง€ ์•Š์€ ๊ฐ์ฒด์ง€ํ–ฅ ์›๋ฆฌ์— ์ถฉ์‹คํ•œ ์ž๋ฐ” ๊ฐ์ฒด
โ€ข
ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์šฉ์ดํ•˜๋ฉฐ, ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
PSA(Portable Service Abstraction)
โ€ข
ํ™˜๊ฒฝ๊ณผ ์„ธ๋ถ€๊ธฐ์ˆ ์˜ ๋ณ€๊ฒฝ๊ณผ ๊ด€๊ณ„์—†์ด ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๊ธฐ์ˆ ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์„ค๊ณ„ ์›์น™
โ€ข
์˜ˆ๋ฅผ ๋“ค์–ด DB์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹
IoC/DI (Inversion of Control / Dependency Injection)
โ€ข
DI๋Š” ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋‘๊ณ  ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด๊ด€๊ณ„๋Š” ์™ธ๋ถ€์—์„œ ๋‹ค์ด๋‚˜๋ฏนํ•˜๊ฒŒ ์„ค์ •
AOP (Aspect Oriented Programming)
โ€ข
๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ชจ๋“ˆ์„ฑ์„ ํ–ฅ์ƒ
โ€ข
๊ณตํ†ต ๋ชจ๋“ˆ์„ ์—ฌ๋Ÿฌ ์ฝ”๋“œ์— ์‰ฝ๊ฒŒ ์ ์šฉ ๊ฐ€๋Šฅ

Spring Framework Module

Spring Core
โ€ข
Spring Framework์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, Core ์ปจํ…Œ์ด๋„ˆ์˜ ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ๋Š” Bean Factory์ด๋‹ค.
โ—ฆ
Bean : Spring์—์„œ์˜ ๊ฐ์ฒด
โ—ฆ
Bean Factory : ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณต์žฅ, ์‚ฌ์šฉ์ž์˜ ๊ฐ์ฒด ์ƒ์„ฑ์„ ๋Œ€์‹ ํ•จ