๐ŸŒ WEB/Spring

Spring ์ด์ •๋ฆฌ 2.Spring 3๋Œ€ ์ž‘๋™์›๋ฆฌ

์• ์ •์“ฐ 2020. 6. 6. 20:26

Spring Container

Servlet์—์„œ 1:1mapping์„ ๋ณด์•ˆํ•ด์„œ ์ž๋™์œผ๋กœ ๋ถ„๊ธฐ, ์ž๋™์œผ๋กœ ์ƒ์„ฑํ™”๋ฉด ์ด๋™์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ด Controller๋Š” ๋‹ค์–‘ํ•œ ์š”์ฒญ์„ ์ œ์–ดํ•˜์—ฌ J2EE Pattern: frontController ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

Business Layer์—์„œ handler mapper๋ฅผ ์žŠ๊ณ  ๊ทธ๋ฆฌ์ง€ ์•Š์•˜๋Š”๋ฐ ์•Œ์•„๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Handler Mapping : dispatcherSevlet์œผ๋กœ ๋ฐ›์€ ์š”์ฒญ -> Controller ๋ณด๋ƒ„-> ์š”์ฒญ์ด ์–ด๋–ค ๋งคํ•‘์ธ์ง€ ๊ทธ ๋ฐฉ๋ฒ•์„ ์ •ํ•ด์ฃผ๋Š” ํด๋ž˜์Šค ์ž…๋‹ˆ๋‹ค.

 

Spring 3๋Œ€ ์ž‘๋™์›๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

1. DI/IoC

- Bean Spring ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋“ฑ๋ก

- Life-Cycle์„ ๋”ฐ๋ผ๊ฐ€์ง€ ์•Š๊ณ  ์‚ฌ์šฉ

POJO๋ฅผ Spring beanํ˜น์€ @Annotation์„ ํ†ตํ•ด์„œ ๋“ฑ๋ก

- DI : Bean๋“ฑ๋ก, ์ปจํ…Œ์ด๋„Œ๊ฐ€ ์ž‘๋™๋  ๋•Œ ๋ฏธ๋ฆฌ ๋“ฑ๋กํ•œ๋‹ค.

- IoC : ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”๋กœ ํ• ๋•Œ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์™€์„œ ์ฃผ์ž…ํ•œ๋‹ค.

 

2. AOP

์–ด๋– ํ•œ ๋กœ์ง์˜ ๊ธฐ์ค€์œผ๋กœ ํ•ต์‹ฌ์ด ๋˜๋Š” ๊ธฐ๋Šฅ๊ณผ ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌ๋ถ„ํ•œ๋‹ค.

CC (Core Concern ์ฃผ๊ด€์‹ฌ์‚ฌ) CCC(Cross-Cutting Concern ๊ด€์ ์™ธ ๊ด€์‹ฌ์‚ฌ)
Bean, Process, Mybatis ... Log, Exception, Transaction ...

ํŠธ๋žœ์žญ์…˜ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๋œปํ•œ๋‹ค.

 

AOP์šฉ์–ด

Aspect CCC๋ฅผ ๋ชจ๋“ˆํ™”

Target Aspect๊ฐ€ ์ž‘๋™๋˜๋Š” ๊ณณ

Advice ์–ด๋–ค ์ž‘์—…์„ ํ•ด์•ผ ํ•  ์ง€ ์„ ํƒํ•˜๋Š”๊ฒƒ, ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ๋‹ด์€ ๊ตฌํ˜„์ฒด

JoinPoint ๋ผ์–ด๋“ค ์ˆ˜ ์žˆ๋Š” ์œ„์น˜

PointCut ๊ตฌ์ฒด์ ์ธ ์‹คํ–‰๋  ์‹œ์ 

 

- aspect(๋ชจ๋“ˆํ™”)

  -target(๋Œ€์ƒ ํด๋ž˜์Šค, ๋งค์„œ๋“œ)

     -advice(์‹คํ–‰๋˜๋Š” ๋ฉ”์„œ๋“œ)

        -joinpoint()

        -pointcut()

 

AOP ์‹คํ–‰ ์‹œ์ 

Before , After, AfterReturning, AfterThrowing, Around

 

3. OCP

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ 5์›์น™์ด๋ผ ํ•˜๋Š” SOLED์—์„œ 

OCP(Open Closed Principle) ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™์ด๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ์š”์†Œ๋Š” ํ™ฉ์žฅ์—๋Š” ์—ด๋ ค ์žˆ์œผ๋‚˜ ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

ํด๋ž˜์Šค, ๋ชจ๋“ˆ ํ•จ์ˆ˜ ๋“ฑ์€ ํ™•์žฅ์— ๋Œ€ํ•ด ์—ด๋ ค ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

- interface๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹

 

๋ฐ˜์‘ํ˜•