728x90
๋ฐ˜์‘ํ˜•

spring 9

[Spring] IoC์™€ DI — ์ข‹์€ ์ฝ”๋“œ์˜ ํ•ต์‹ฌ ์›์น™

๐Ÿ“ TIL (Today I Learned) — 2025.09.22. ์›”์š”์ผโœ๏ธ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„์—์„œ Spring ํ•™์Šต ์ค‘ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.1. IoC์™€ DI๋ž€?Spring์„ ๋ฐฐ์šฐ๋ฉด ๊ฐ€์žฅ ๋จผ์ € ์ ‘ํ•˜๋Š” ๋‹จ์–ด๊ฐ€ IoC์™€ DI์ž…๋‹ˆ๋‹ค.๋งŽ์€ ๋ถ„๋“ค์ด “Spring์—์„œ๋งŒ ์“ฐ๋Š” ๊ธฐ๋Šฅ”์œผ๋กœ ์˜คํ•ดํ•˜์ง€๋งŒ, ์‚ฌ์‹ค์€ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™์—์„œ ๋น„๋กฏ๋œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.IoC (Inversion of Control, ์ œ์–ด์˜ ์—ญ์ „)๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ์ œ์–ด ๊ถŒํ•œ์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์™ธ๋ถ€(Spring IoC ์ปจํ…Œ์ด๋„ˆ)์— ๋งก๊ธฐ๋Š” ๊ฐœ๋… → Spring IoC ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ์ฒด ์ƒ์„ฑ, ์˜์กด์„ฑ ์—ฐ๊ฒฐ, ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ๊นŒ์ง€ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘‰ “๋‚ด๊ฐ€ ์ง์ ‘ ๋งŒ๋“ค์ง€ ๋ง๊ณ , ๋Œ€์‹  ํ•ด์ค„ ์‚ฌ๋žŒ์—๊ฒŒ ๋งก๊ธฐ์ž”DI (Dependency Injection, ์˜์กด์„ฑ ์ฃผ์ž…)IoC ์›์น™์„ ๊ตฌํ˜„ํ•˜..

[Spring] ์ž๋ฐ” ์›น ๊ฐœ๋ฐœ ํ๋ฆ„ ์ •๋ฆฌ — Servlet๋ถ€ํ„ฐ Spring Boot๊นŒ์ง€

๐Ÿ“ TIL (Today I Learned) — 2025.09.18. ๋ชฉ์š”์ผโœ๏ธ ์ด ๊ธ€์€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„์—์„œ Spring ์ž…๋ฌธ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ TIL์ž…๋‹ˆ๋‹ค.์ž๋ฐ” ์›น ๊ฐœ๋ฐœ์˜ ๋ฐœ์ „ ๊ณผ์ •์˜ค๋Š˜๋‚  ์ž๋ฐ” ์›น ๊ฐœ๋ฐœ์—์„œ Spring Boot๋Š” ์‚ฌ์‹ค์ƒ ํ‘œ์ค€์ž…๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ Spring Boot๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ธฐ์กด ๊ธฐ์ˆ ์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ณ  ๋ฐœ์ „ํ•œ ๋์— ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฌผ์ด๋ผ๋Š” ์ ์„ ์•Œ๋ฉด ํ›จ์”ฌ ๋” ๊นŠ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ” ์›น ๊ฐœ๋ฐœ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๋ฐœ์ „ํ–ˆ์Šต๋‹ˆ๋‹ค.๐Ÿ‘‰ ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ → JSP/Servlet → Spring MVC → Spring Boot1. ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ (์ดˆ๊ธฐ ์›น ๊ฐœ๋ฐœ)ํ™”๋ฉด, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฝ”๋“œ๊ฐ€ ํ•œ ํŒŒ์ผ์— ๋’ค์„ž์—ฌ ์žˆ๋˜ ์‹œ๊ธฐ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€, ์ž‘์€ ์ˆ˜์ •๋„ ํฐ ..

[Spring] Spring MVC๋ž€? — MVC ํŒจํ„ด๊ณผ DispatcherServlet ๋™์ž‘ ์›๋ฆฌ

๐Ÿ“ TIL (Today I Learned) — 2025.09.17. ์ˆ˜์š”์ผโœ๏ธ ์ด ๊ธ€์€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„์—์„œ Spring ์ž…๋ฌธ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ TIL์ž…๋‹ˆ๋‹ค.๐Ÿ“š ๋ชฉ์ฐจ์ž๋ฐ” ์›น ๊ฐœ๋ฐœ์˜ ๋ฐœ์ „ ๊ณผ์ •MVC ๋””์ž์ธ ํŒจํ„ด์ด๋ž€?Servlet์˜ ์ดํ•ด์™€ ๋™์ž‘ ์›๋ฆฌServlet์˜ ํ•œ๊ณ„์ Spring MVC์™€ Front Controller ํŒจํ„ดDispatcherServlet ๋™์ž‘ ์›๋ฆฌ1. ์ž๋ฐ” ์›น ๊ฐœ๋ฐœ์˜ ๋ฐœ์ „ ๊ณผ์ •์ž๋ฐ” ์›น ๊ฐœ๋ฐœ์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ฝ”๋“œ ๊ตฌ์กฐ์™€ ์ƒ์‚ฐ์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐœ์ „ํ•ด ์™”์Šต๋‹ˆ๋‹ค.์ดˆ๊ธฐ์—๋Š” ํ™”๋ฉด, ๋กœ์ง, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฝ”๋“œ๊ฐ€ ํ•œ ํŒŒ์ผ์— ๋’ค์„ž์—ฌ ์žˆ์—ˆ์ง€๋งŒ, ์ง€๊ธˆ์€ ์„ค์ • ์ž๋™ํ™”์™€ ๋‚ด์žฅ ์„œ๋ฒ„๊นŒ์ง€ ์ œ๊ณตํ•˜๋Š” Spring Boot๊ฐ€ ์‚ฌ์‹ค์ƒ ํ‘œ์ค€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ”„ ๋ฐœ์ „ ๋‹จ๊ณ„ ํ๋ฆ„์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ → JSP/..

[Spring/Lombok] ์ƒ์„ฑ์ž ์• ๋„ˆํ…Œ์ด์…˜ ์•Œ์•„๋ณด๊ธฐ — @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor

๐Ÿ“ TIL (Today I Learned) — 2025.09.16. ํ™”์š”์ผ โœ๏ธ ์ด ๊ธ€์€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„์—์„œ Spring ์ž…๋ฌธ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ TIL์ž…๋‹ˆ๋‹ค.๐Ÿค” Lombok์„ ์™œ ์จ์•ผ ํ• ๊นŒ์š”?Java๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ๊ฐ™์€ ํŒจํ„ด์˜ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์ž‘์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ํด๋ž˜์Šค๋งˆ๋‹ค ์ƒ์„ฑ์ž, getter, setter๋ฅผ ๋งŒ๋“œ๋Š” ์ž‘์—…์€ ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ค๊ณ , ๊ฐ€๋…์„ฑ๋„ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ„๋‹จํ•œ ์ƒํ’ˆ ํด๋ž˜์Šค๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค:// ๐Ÿ˜ต Lombok ์—†์ด ์ž‘์„ฑํ•˜๋ฉด...public class Product { private String name; private int price; // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž public Product() {} // ๋ชจ๋“  ํ•„๋“œ..

[Spring] Spring MVC ์™€ Spring Webflux์˜ ์ฐจ์ด์ 

Spring Framework์—๋Š” ๋Œ€ํ‘œ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์ด ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์•Œ๋ ค์ง€๊ณ  ๋Œ€์ค‘์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” Spring MVC ๋ชจ๋ธ์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” Spring WebFlux ๋ชจ๋ธ์ด๋‹ค. Spring WebFlux๋ž€? Spring WebFlux๋Š” Spring 5์—์„œ ์ƒˆ๋กญ๊ฒŒ ๋„์ž…๋œ ๋ชจ๋“ˆ์ด๋ฉฐ, ๋น„๋™๊ธฐ ๋ฐ ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•œ๋‹ค. Spring MVC์™€๋Š” ๋‹ค๋ฅด๊ฒŒ Servlet API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ , ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ์ฑ„ํƒํ•˜์—ฌ ์ž‘๋™ํ•œ๋‹ค. ์ด์ „์—๋Š” Servlet API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ Spring MVC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™๊ธฐ์ ์ธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ–ˆ๋‹ค. ๋™๊ธฐ์ ์ธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, ์ด๋Š” ๋†’์€ ํŠธ๋ž˜ํ”ฝ๊ณผ ๋ฐ์ดํ„ฐ ์–‘์„ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์ตœ..

Programming/Spring 2024.03.17

[Spring] Spring Initializr๋กœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

Spring Initializr Spring Initializr ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด SpringBoot ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. https://start.spring.io/ ์˜ ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐฝ์ด ๋œฌ๋‹ค. Project SpringBoot๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํƒํ•œ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” Maven์„ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์ตœ๊ทผ์—๋Š” Gradle์„ ์‚ฌ์šฉํ•˜๋Š” ์ถ”์„ธ์ด๋‹ค. Language ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์„ ํƒํ•œ๋‹ค. SpringBoot SpringBoot ๋ฒ„์ „์„ ์„ ํƒํ•œ๋‹ค. SNAPSHOT์€ ์•„์ง ๊ฐœ๋ฐœ ์ค‘์ธ ๋ฐ๋ชจ๋ฒ„์ „์ด๋‹ค. M1์ด๋‚˜ M2 ๋“ฑ์€ ์ •์‹ ๋ฆด๋ฆฌ์ฆˆ๋˜์ง€ ์•Š์€ ๋ฒ„์ „์ด๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ ์—†์ด ๋ฒ„์ „๋งŒ ๋ช…์‹œ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด ์ •์‹ ๋ฆด๋ฆฌ์ฆˆ ๋œ ๋ฒ„์ „์ž„์œผ๋กœ ์ด๋“ค ์ค‘์—์„œ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค. ๋†’์€ ๋ฒ„์ „์€ ๋†’์€ ..

Programming/Spring 2024.03.05

[์Šคํ”„๋ง] MVC, MVP, MVVM ๋””์ž์ธ ํŒจํ„ด

MVVM์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” MVC -> MVP -> MVVM ์ˆœ์„œ๋Œ€๋กœ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. MVC ํŒจํ„ด ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ MVC๋ž€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ฑ๊ณต์ ์ด๋ฉฐ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ชจํ˜•์— ๊ด€๋ จ ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋ก  ๋˜๋Š” ์„ค๊ณ„ ๋ฐฉ์‹์ค‘ ํ•˜๋‚˜๋กœ์จ, ๋ชฉ์  ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์— ์œ ์šฉํ•œ ๊ฒƒ์€ ๋ฌผ๋ก , ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ํ˜„์ €ํ•˜๊ฒŒ ์ค„์—ฌ์ฃผ๋Š” ํ˜•์‹์ด๋ผ๊ณ  ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ‰๊ฐ€ํ•˜๊ณ  ์žˆ๋‹ค. Model, View, Controller์˜ ์•ฝ์ž๋กœ User – View – Controller – Model – Controller – View User์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. MVC ํŒจํ„ด์€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ๊ฐ์  ๋ถ€๋ถ„๊ณผ ๊ฐ€ ์ด๋ฉด์˜ ๋™์ž‘๊ณผ ์ œ์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„(๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋ผ ํ•œ๋‹ค)์„ ๋ถ„๋ฆฌ..

Programming/Spring 2023.07.03

[์Šคํ”„๋ง] ๋””์ž์ธ ํŒจํ„ด

๋””์ž์ธ ํŒจํ„ด์˜ ๊ฐœ์š” ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ํ˜‘์—…์„ ํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœ ํ•  ๋•Œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋‚˜ ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค. ์ด๋Ÿฐ ์ฝ”๋“œ๋“ค์€ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ํ•จ์— ์žˆ์–ด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ตœ์ ํ™”๋ฅผ ํ•˜๊ธฐ์— ํž˜๋“  ๊ตฌ์กฐ์ ์ธ ๊ฒฐํ•จ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋””์ž์ธ ํŒจํ„ด์€ ๋“ฑ์žฅํ–ˆ๋‹ค. ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด์„œ ๋งŒ๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ง€๊ตฌ์ƒ์—์„œ ์œ ์ผํ•œ ๋ฌธ์ œ์ผ ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•ž์„œ ์ด๋ฏธ ๋งŽ์€ ์ˆ˜๋งŽ์€ ์˜ค๋ฅ˜๋“ค์„ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํŒจํ„ดํ™”ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ข€๋” ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํญ์„ ์ค„์ด๊ณ  ์ˆ˜์ •ํ•˜๋Š”๋ฐ(๋ฐœ์ƒํ•˜๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ์˜ˆ์™ธ๋ฅผ ์ฐพ๋Š”๋ฐ ์กฐ๊ธˆ๋” ๋œ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ) ์ตœ์†Œํ•œ์˜ ์‹œ๊ฐ„์„ ๋“ค์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ๋””์ž์ธ ํŒจํ„ด์€ ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์„ ๊ฐœ๋ฐœํ•˜๋Š” ์ค‘์— ๋ฐœ์ƒํ–ˆ๋˜ ๋ฌธ์ œ์ ๋“ค์„ ์ •๋ฆฌ ๋ฐ ํŠน..

Programming/Spring 2023.07.02

[์Šคํ”„๋ง] ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (AOP)

AOP์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OPP, Object-oriented Programming) ๊ณตํ†ต์˜ ๋ชฉ์ ์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋™์ž‘์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ์ฒด๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•จ์œผ๋กœ์จ ๊ธฐ๋Šฅ์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ์žฅ์ ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ(SoC, Seperation of Concerns)์˜ ๋””์ž์ธ ์›์น™์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค. Spring MVC์—์„œ๋Š” @Controller, @Service, @Repository์™€ ๊ฐ™์ด ๊ด€์‹ฌ์‚ฌ๋ณ„๋กœ ๊ณ„์ธต์„ ๋‚˜๋ˆ  ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋Š” ๋ชจ๋“ˆํ™”์˜ ํ•ต์‹ฌ์ด ๋œ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•œ๊ณ„ ์  ํŠน์ • ๊ด€์‹ฌ์‚ฌ ์—…๋ฌด ์ฝ”๋“œ์— ํŠธ๋žœ์žญ์…˜, ๋กœ๊น…, ๋ณด์•ˆ ๋“ฑ์€ ํ•„์ˆ˜์ ์ธ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ์—…๋ฌด ๊ธฐ๋Šฅ๊ณผ๋Š” ..

Programming/Spring 2023.06.29
728x90
๋ฐ˜์‘ํ˜•