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

์Šคํ”„๋ง Spring/๐Ÿงถ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ Spring

Spring Framework์˜ ๊ฐœ๋…๊ณผ ๊ตฌ์กฐ

by Meteora_ 2021. 4. 19.
728x90

Spring Framework ๊ฐœ๋… ๋ฐ ๊ตฌ์กฐ

 

 

spring framework

์ด๋ฒˆ ํฌ์ŠคํŒ…์€ web ๊ฐœ๋ฐœ(java)์„ ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” framework์ธ Spring์— ๋Œ€ํ•ด์„œ ์ „๋ฐ˜์ ์ธ ๋Š๋‚Œ์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ €์˜ ๋ธ”๋กœ๊ทธ๋Š” ์ž…๋ฌธ์ž๋“ค์—๊ฒŒ ๊ฑฐ๋ฆฌ๊ฐ์ด ๋Š๊ปด์ง€๋Š” ์ถ”์ƒ์ ์ธ ๊ฐœ๋…๋“ค์„ ๊ตฌ์ฒดํ™”ํ•ด๋ณด๋ฉด์„œ ์ด์ „๋ณด๋‹ค ์นœ์ˆ™ํ•ด์ง€๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ… ๋˜ํ•œ ๋™์ผํ•œ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

* ์ฐธ๊ณ 1 : ํ•ด๋‹น ํฌ์ŠคํŒ…์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ๋Š” software design pattern์˜ MVC model 2๋ฅผ ์ฑ„ํƒํ•˜์˜€๊ณ , IDE๋Š” eclipse๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

* ์ฐธ๊ณ 2 : WAS์™€ software design pattern MVC model 2์— ๋Œ€ํ•œ ์‚ฌ์ „์ง€์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

 

--------------------------------------------

[ ๋ชฉ์ฐจ ]

1. Spring ๊ฐœ๋…

 

2. Spring ๊ตฌ์กฐ

  2.1 Bean ๊ด€์ 

  2.2 MVC ๊ด€์ 

 

3. spring project ๊ตฌ์„ฑ (eclipes ๊ธฐ์ค€)

 

4. spring ์„ค์ •์ˆœ์„œ

--------------------------------------------

1. Spring ๊ฐœ๋…

  - Spring์€ ๊ฐœ๋ฐœ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” Framework ์ž…๋‹ˆ๋‹ค. 

ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋ฉด Frame(ํ‹€) + work(์ผ) ์œผ๋กœ ์ผ(๊ฐœ๋ฐœ)์„ ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ธฐ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํ‹€(frame) ์ž…๋‹ˆ๋‹ค. 

framework์€ ์ •ํ•ด์ง„ ๊ทœ์น™์„ ์ง€ํ‚ค๋ฉด ๊ฐœ๋ฐœ์˜ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ผ์ƒ์ƒํ™œ์—์„œ ๋น„์œ ๋ฅผ ํ•œ๋‹ค๋ฉด ์ปคํ”ผ๋ฅผ ๋งŒ๋“ค ๋•Œ ํ•ธ๋“œ๋“œ๋ฆฝ์œผ๋กœ ๋งŒ๋“œ๋Š”๊ฒƒ์€ ์‹œ๊ฐ„๊ณผ ์ •์„ฑ์ด ๋งŽ์ด ์†Œ๋ชจ๋˜์ง€๋งŒ, ์ปคํ”ผ๋จธ์‹ ์œผ๋กœ ์ปคํ”ผ๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด ๊ฐ„๋‹จํ•œ ๋ฒ„ํŠผ์กฐ์ž‘๋งŒ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ปคํ”ผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(์กฐ์ž‘ : ์›๋‘ ๊ธ€๋ผ์ธ๋”ฉ/๋†๋„, ๋ฌผ ์–‘/์˜จ๋„, ๋ผ๋–ผ ๋“ฑ)

 

์—ฌ๊ธฐ์„œ ์ปคํ”ผ๋ฅผ ๋งŒ๋“ค๊ธฐ์œ„ํ•ด ์ปคํ”ผ๋จธ์‹ ์ด ํ•˜๋Š” ์—ญํ• ์ด Spring Framework๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

 

2. spring ๊ตฌ์กฐ

  2.1 Bean ๊ด€์ 

   - Bean์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ด€์ ์—์„œ spring framework์˜ ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

   * Bean : spring container์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด

   * dispatcher servlet ๊ฐ์ฒด : client์˜ ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•  controller์™€ view ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ฐ์ฒด (=front controller)

 

Spring ๊ตฌ์กฐ (bean ๊ด€์ )

 

  2.2 MVC ๊ด€์ 

   - ๋‹ค์Œ์œผ๋กœ๋Š” MVC(sotfware design pattern) ๊ด€์ ์—์„œ spring framework์˜ ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

   * ํŒŒ๋ž€์ƒ‰ ๋ฐ•์Šค : spring ์„ค์ •์˜์—ญ

   * ๋นจ๊ฐ„์ƒ‰ ๋ฐ•์Šค : ๊ฐœ๋ฐœ์ž ์ฝ”๋”ฉ์˜์—ญ

   * Handler = controller ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐœ๋…

 

Spring ๊ตฌ์กฐ (MVC๊ด€์ )

 

3. spring project ๊ตฌ์„ฑ (eclipse)

  - ํ•ด๋‹น spring project ์˜ type์€  'spring MVC project' ์ž…๋‹ˆ๋‹ค.

 

  * spring ์˜ ์„ค์ •์€ java or xml ์˜ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

 

RecommendBook_B : project ๋ช… (=context path)

 

 

[controller, model] 

src/main/java : java source (controller, DAO, DTO...)

                 spring ์„ค์ •ํŒŒ์ผ (dispatcher, Bean) - java๋กœ ์„ค์ • ํ•  ๊ฒฝ์šฐ

 

[view]

src/main/webapp/resource  : ์ •์ ์ž์› (HTML, CSS, JS)

src/main/webapp/WEB-INF/spring : spring ์„ค์ •ํŒŒ์ผ - xml๋กœ ์„ค์ • ํ•  ๊ฒฝ์šฐ

src/main/webapp/WEB-INF/views : JSP ํŒŒ์ผ

src/main/webapp/WEB-INF/web.xml : tomcat ์„ค์ •ํŒŒ์ผ

 

 

 

pom.xml : Maven project ์„ค์ •ํŒŒ์ผ

 

 

 

 

4. spring ์„ค์ •์ˆœ์„œ

 - spring ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜๊ฒŒ ์กด์žฌํ•˜์ง€๋งŒ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ์„ค์ •์— ๋Œ€ํ•ด์„œ๋งŒ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

(์ด๋Š” ์ ˆ๋Œ€์ ์ธ ์ˆœ์„œ๋Š” ์•„๋‹ˆ๋ฉฐ ๊ฐœ๋ฐœ์ž์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)

 

4.1 project ์„ค์ • (pom.xml)

  - Maven, JdbcTemplate, dependency ...

 

4.2 tomcat ์„ค์ • (web.xml)

 - servlet, ์ธ์ฝ”๋”ฉ ๋“ฑ๋“ฑ

 

* ์ฐธ๊ณ  : dispatcher servlet / bean ์„ค์ •ํŒŒ์ผ์„ ๋“ฑ๋กํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•จ

 

 

4.3 dispatcher servlet ์„ค์ • (java or xml)

 - Handler Mapping : client์˜ request๋ฅผ ์ˆ˜ํ–‰ ํ•  controller ๊ฐ์ฒด๋ฅผ mapping

 - Handler Adapter : client์˜ request๋ฅผ ์ˆ˜ํ–‰ ํ•  controller๊ฐ์ฒด์˜ method๋ฅผ mapping

 - view Resolver : client์— ๋ฐ˜ํ™˜ ํ•  view๋ฅผ ์„ ํƒ

 - Resource Handler : webapp/resources ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •

 

 

4.4 Bean ์„ค์ • (java or xml)

 - Aspect ์„ค์ • : autoproxy

 - ๊ฐ์ข… bean์„ ์ƒ์„ฑ (controller, view, model, aspect ...)

 

 

4.5 Bean ์ •์˜ (java)

 - Controller : request URL mapping ์„ค์ • + logic

 - View 

 - Moded (service, DAO)

 - DTO

 

 

 

* ๋งˆ์น˜๋ฉฐ

์ด๋กœ์จ Spring์˜ ๊ฐœ๋…๋ถ€ํ„ฐ ๊ตฌ์กฐ์™€ ์„ค์ •์ˆœ์„œ๊นŒ์ง€ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. Spring ์€ software ๊ฐœ๋ฐœ์„ ๋„์™€์ฃผ๋Š” ์—ญํ™œ์„ ํ•˜๋Š” ๋„๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์กฐ์™€ ์„ค์ •์ด ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 

์ €์™€ ๊ฐ™์€ spring ์ž…๋ฌธ์ž๋“ค์—๊ฒŒ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋˜์…จ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉด์„œ ํฌ์ŠคํŒ…์„ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€